Dashboard
The home page (/) shows the authenticated user's game dashboard.
Component hierarchy
Welcome → Main → Me
| File | Role |
|---|---|
Welcome.js |
Home page wrapper |
Main.js |
Layout shell for dashboard |
Me.js |
Dashboard logic and tables |
Data loading
Me.js fetches the full me auth query on mount and when refresh increments. The response drives:
- Games awaiting the user's move
- Games awaiting opponent's move
- Open challenges (issued, received, accepted)
- Standing challenges
- Bot status (via
botApi.js)
Partial me data may already be in Zustand globalMe from navbar login; Me merges and extends it.
Tables
| Component | Content |
|---|---|
MyTurnTable.js |
Games where it is the user's turn |
TheirTurnTable.js |
Games waiting on opponent |
CompletedGamesTable.js |
Finished games |
StandingChallengeTable.js |
Active standing challenges |
Challenges
Modal flows for creating and responding to challenges:
NewChallengeModal.jsChallengeMeRespond.jsChallengeTheyRespond.jsChallengeOpen.jsStandingChallengeModal.js
Backend semantics: Challenges.
Profile creation
If the user has no profile, NewProfile.js is shown before the dashboard tables.
WebSocket refresh
Dashboard tables update when WebSocket messages arrive (e.g. opponent moved, new challenge). See WebSockets.