Add site plan to frontend project plan
- Mobile-first, desktop first-class citizen - Navigation: left sidebar (desktop), bottom tabs (mobile) - 11 routes defined with auth requirements and layouts - 3 layout types: minimal (login), game (full viewport), default (nav) - Auth flow: login → starter (if needed) → dashboard - Dashboard widgets and profile page v1 scope defined Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
f452e69999
commit
29b5d36621
@ -47,6 +47,79 @@
|
||||
}
|
||||
},
|
||||
|
||||
"sitePlan": {
|
||||
"designApproach": "Mobile-first, desktop is first-class citizen",
|
||||
"navigation": {
|
||||
"desktop": "Left sidebar",
|
||||
"mobile": "Bottom tabs",
|
||||
"items": [
|
||||
{"icon": "home", "label": "Home", "route": "/"},
|
||||
{"icon": "cards", "label": "Collection", "route": "/collection"},
|
||||
{"icon": "deck", "label": "Decks", "route": "/decks"},
|
||||
{"icon": "play", "label": "Play", "route": "/play"},
|
||||
{"icon": "user", "label": "Profile", "route": "/profile"}
|
||||
]
|
||||
},
|
||||
"layouts": {
|
||||
"minimal": {
|
||||
"routes": ["/login", "/auth/callback"],
|
||||
"description": "No navigation, centered content"
|
||||
},
|
||||
"game": {
|
||||
"routes": ["/game/:id"],
|
||||
"description": "Full viewport for Phaser, no nav"
|
||||
},
|
||||
"default": {
|
||||
"routes": ["*"],
|
||||
"description": "Sidebar (desktop) / bottom tabs (mobile)"
|
||||
}
|
||||
},
|
||||
"routes": [
|
||||
{"path": "/login", "name": "Login", "auth": "guest", "layout": "minimal", "notes": "OAuth buttons, redirect if logged in"},
|
||||
{"path": "/auth/callback", "name": "AuthCallback", "auth": "none", "layout": "minimal", "notes": "Silent token handling"},
|
||||
{"path": "/starter", "name": "StarterSelection", "auth": "required", "layout": "minimal", "notes": "Redirect here if no starter deck"},
|
||||
{"path": "/", "name": "Dashboard", "auth": "required", "layout": "default", "notes": "Home with widgets (future)"},
|
||||
{"path": "/collection", "name": "Collection", "auth": "required", "layout": "default", "notes": "Card grid with filters"},
|
||||
{"path": "/decks", "name": "DeckList", "auth": "required", "layout": "default", "notes": "List + create button"},
|
||||
{"path": "/decks/new", "name": "NewDeck", "auth": "required", "layout": "default", "notes": "Deck builder (empty)"},
|
||||
{"path": "/decks/:id", "name": "EditDeck", "auth": "required", "layout": "default", "notes": "Deck builder (existing)"},
|
||||
{"path": "/play", "name": "PlayMenu", "auth": "required", "layout": "default", "notes": "Game mode selection"},
|
||||
{"path": "/game/:id", "name": "Game", "auth": "required", "layout": "game", "notes": "Phaser canvas, full viewport"},
|
||||
{"path": "/profile", "name": "Profile", "auth": "required", "layout": "default", "notes": "Display name, avatar, linked accounts, logout"}
|
||||
],
|
||||
"authFlow": {
|
||||
"loggedOut": "Redirect to /login",
|
||||
"loggedInNoStarter": "Redirect to /starter",
|
||||
"loggedIn": "Allow access to protected routes"
|
||||
},
|
||||
"futureRoutes": [
|
||||
{"path": "/campaign", "backendDep": "Phase 5"},
|
||||
{"path": "/campaign/club/:id", "backendDep": "Phase 5"},
|
||||
{"path": "/matchmaking", "backendDep": "Phase 6"},
|
||||
{"path": "/history", "backendDep": "Phase 6"},
|
||||
{"path": "/packs", "backendDep": "Phase 5"}
|
||||
],
|
||||
"dashboardWidgets": {
|
||||
"planned": [
|
||||
"Active games (resume)",
|
||||
"Quick play button",
|
||||
"Recent matches",
|
||||
"Collection stats",
|
||||
"Daily rewards (Phase 5+)",
|
||||
"News/announcements"
|
||||
],
|
||||
"v1": ["Quick play button", "Active games"]
|
||||
},
|
||||
"profilePage": {
|
||||
"v1Features": [
|
||||
"Avatar display",
|
||||
"Display name (editable)",
|
||||
"Linked accounts list",
|
||||
"Logout button"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"phases": [
|
||||
{
|
||||
"id": "PHASE_F0",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user