2.7 KiB
2.7 KiB
type, title, description, tags, timestamp, story_id, status
| type | title | description | tags | timestamp | story_id | status | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| User Story | Monitor community account activity | Administrators use a server-rendered dashboard to review registrations, monthly activity, denials, and risky networks. |
|
2026-08-01T23:32:54Z | US-018 | verified |
User Story
As an administrator, I want an operational dashboard of account and game activity, so that I can understand community growth and quickly investigate access risks.
Acceptance Criteria
- The administrator landing page is a dashboard rather than a settings form.
- An open-data world map plots each user's latest observation with valid approximate coordinates.
- Map markers link to user records and have an accessible text-table equivalent.
- Natural Earth boundaries are bundled and server-rendered without disclosing map or location requests to a third party.
- The dashboard graphs new registered users by UTC day for the previous 14 days.
- Monthly active users count distinct users observed through portal or game activity in the previous 30 days.
- Monthly active Minecraft accounts count distinct linked accounts observed in the previous 30 days.
- The dashboard shows login denials from the previous 24 hours.
- Recent VPN, proxy, and Tor observations link to affected user records.
- The graph includes an accessible title, description, point labels, and textual values.
- Dashboard queries and rendering execute server-side without client-side data fetching.
- Deployment-managed guild settings and denial messaging remain available on a dedicated settings page.
Implementation
apps/web/src/app/admin/(console)/page.tsxapps/web/src/app/admin/(console)/settings/page.tsxapps/web/src/lib/admin-metrics.tsapps/web/src/components/user-world-map.tsxapps/web/src/lib/user-location-map.ts
Validation
- Missing-day chart behavior is covered by
apps/web/src/lib/admin-metrics.test.ts. - Coordinate parsing, projection, linked markers, text fallback, and attribution are covered by the user-world-map tests.
- The Next.js production build reports the dashboard and database-backed console pages as dynamic server-rendered routes.