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:
Cal Corum 2026-01-30 08:19:52 -06:00
parent f452e69999
commit 29b5d36621

View File

@ -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",