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 calls fetchDashboard() (me_dashboard auth query) on mount and when refresh increments. Navbar chrome uses fetchProfile() (me_profile) and fetchNotifications() (list_notifications) separately — profile fetches do not load in-app notifications.
The dashboard response drives:
- Games awaiting the user's move
- Games awaiting opponent's move
- Open challenges (issued, received, accepted)
- Standing challenges
- Completed games (post-game chat via in-app notifications; browse older games on per-metaGame list pages)
- Watched games
- Bot status (via
botApi.js)
Partial data may already be in Zustand globalMe from navbar login; fetchDashboard merges into globalMe with { ...prev, ...dashboard }. In-app notifications are not part of the dashboard payload — Me.js calls fetchNotifications() in parallel when loading the dashboard.
Backend: Auth queries — Profile and dashboard (me_dashboard, dismiss_notification).
Tables
| Component | Content |
|---|---|
MyTurnTable.js |
Games where it is the user's turn |
TheirTurnTable.js |
Games waiting on opponent |
WatchedGamesTable.js |
Spectated games (persistent watch list) |
StandingChallengeTable.js |
Active standing challenges |
In-app notifications
The dashboard no longer hosts a notifications table. The navbar NotificationBell.js is the sole in-app feed UI. See Notifications (front).
Under Your games, a link downloads all completed game reports from records.abstractplay.com.
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.