-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patharch.json
More file actions
73 lines (73 loc) · 3.84 KB
/
Copy patharch.json
File metadata and controls
73 lines (73 loc) · 3.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
{
"schema_version": 1,
"diagram_type": "architecture",
"meta": {
"title": "Smart Financial Planner",
"quality_profile": "showcase",
"output": "architecture.html",
"views": [
{
"id": "survey-path",
"label": "Primary Survey Path",
"note": "Users authenticate via Google, complete the 5-step survey, and their data is persisted in Firestore.",
"focus": ["users", "app_survey", "auth_google", "db_users", "db_surveys"]
},
{
"id": "admin-path",
"label": "Admin Dashboard & Export",
"note": "Admins log in with Email/Password to view analytics and export survey data.",
"focus": ["admins", "app_admin", "auth_email", "db_surveys"]
}
]
},
"components": [
{ "id": "users", "label": "Students & Staff", "type": "external", "pos": [80, 220], "size": [130, 60], "sublabel": "Browser / Mobile" },
{ "id": "admins", "label": "Administrators", "type": "external", "pos": [80, 460], "size": [130, 60], "sublabel": "Browser / PC" },
{ "id": "app_survey", "label": "Financial Planner", "type": "frontend", "pos": [310, 220], "size": [140, 60], "sublabel": "Next.js SSR App" },
{ "id": "app_admin", "label": "Admin Portal", "type": "frontend", "pos": [310, 460], "size": [140, 60], "sublabel": "Dashboard & Export" },
{ "id": "auth_google", "label": "Google Auth", "type": "security", "pos": [560, 100], "size": [130, 60], "sublabel": "Federated Sign-In" },
{ "id": "db_users", "label": "Users Collection", "type": "database", "pos": [560, 220], "size": [130, 60], "sublabel": "Firestore" },
{ "id": "db_surveys", "label": "Surveys Collection", "type": "database", "pos": [560, 340], "size": [130, 60], "sublabel": "Firestore", "tag": "Immutable" },
{ "id": "auth_email", "label": "Email Auth", "type": "security", "pos": [560, 460], "size": [130, 60], "sublabel": "Firebase Auth" }
],
"boundaries": [
{ "kind": "region", "label": "Firebase Hosting (webframeworks)", "wraps": ["app_survey", "app_admin"] },
{ "kind": "region", "label": "Firebase Services", "wraps": ["auth_google", "db_users", "db_surveys", "auth_email"] }
],
"connections": [
{ "id": "c1", "from": "users", "to": "app_survey", "label": "HTTPS", "variant": "emphasis", "labelDy": -15 },
{ "id": "c2", "from": "admins", "to": "app_admin", "label": "HTTPS", "labelDy": -15 },
{ "id": "c3", "from": "app_survey", "to": "auth_google", "label": "OAuth", "fromSide": "top", "toSide": "left", "labelDy": -10, "labelDx": -10 },
{ "id": "c4", "from": "app_survey", "to": "db_users", "label": "Merge Profile", "fromSide": "right", "toSide": "left", "labelDy": -15 },
{ "id": "c5", "from": "app_survey", "to": "db_surveys", "label": "Submit Survey", "fromSide": "bottom", "toSide": "left", "labelDy": 25, "labelDx": 10 },
{ "id": "c6", "from": "app_admin", "to": "auth_email", "label": "Authenticate", "variant": "security", "fromSide": "right", "toSide": "left", "labelDy": 15 },
{ "id": "c7", "from": "app_admin", "to": "db_surveys", "label": "Read & Export", "fromSide": "top", "toSide": "left", "labelDy": -25, "labelDx": 10 }
],
"cards": [
{
"title": "50/30/20 Savings Engine",
"dot": "emerald",
"items": [
"Needs (50%), Wants (30%), Savings (20%)",
"Compound interest projections for KWSP, ASB, Tabung Haji, etc.",
"Live calculation based on retirement age (55)"
]
},
{
"title": "Data Immutability",
"dot": "rose",
"items": [
"Firestore rules strictly prevent users from updating/deleting surveys",
"Admin has read-only access to survey collection"
]
},
{
"title": "Mobile UX",
"dot": "cyan",
"items": [
"Google sign-in uses redirect on mobile devices to prevent popup blockers",
"Seamless progress tracking and form validation"
]
}
]
}