Files
minecraft-account-manager/design/us-018-admin-dashboard.md
T
dmg 20dfc58d63
CI / validate (push) Successful in 6m9s
Release / release (push) Successful in 8m18s
fix(admin): prefer non-anonymized map locations
2026-08-07 18:36:59 -04:00

4.6 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 daily activity, confirmed connections, locations, denials, and risky networks.
admin
dashboard
metrics
security
maps
ssr
2026-08-07T22:31:05Z 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.
  • A server-rendered Natural Earth overview plots each user's latest non-anonymized observation with valid approximate coordinates, allowing clear and hosting classifications while excluding VPN, proxy, and Tor observations.
  • When a user's newest coordinate-bearing observation is VPN, proxy, or Tor, the map uses that user's older clear or hosting observation when one exists.
  • A user without a coordinate-bearing clear or hosting observation is counted as unavailable on the map.
  • Administrators can opt into a zoomable OpenStreetMap view without removing the default overview.
  • OpenStreetMap tiles load only after the administrator selects the interactive view and retain required attribution.
  • Map markers show the managed Discord nickname on hover or keyboard focus, link to user records, and have an accessible text-table equivalent.
  • Users sharing approximate coordinates render as one grouped marker with a visible count in both map views.
  • Grouped-marker hover and keyboard focus list every managed Discord nickname at that location.
  • Interactive grouped markers open a popup with links to every corresponding user record.
  • Single-user markers retain their direct nickname tooltip and user-record link.
  • The location list identifies the enriched network company and ASN when available.
  • The location list shows ProxyCheck's connection type separately from its risk classification.
  • The location list shows the provider's proxy/VPN signal as an explicit Yes or No value.
  • Unknown is shown only for individual enriched fields that are unavailable, including existing cached responses.
  • The dashboard graphs distinct daily active users by UTC day for the previous 14 days with understandable date labels.
  • Monthly active users count distinct users observed through portal or game activity in the previous 30 days.
  • Monthly active Minecraft accounts count distinct accounts with a confirmed Velocity post-login connection in the previous 30 days.
  • The dashboard shows login denials from the previous 24 hours.
  • Recent VPN, proxy, and Tor observations remain available in the separate network-risk section when excluded from map-location selection.
  • The graph includes an accessible title, description, point labels, and textual values.
  • Dashboard queries and initial rendering execute server-side; only the opt-in pan-and-zoom map hydrates client-side.
  • Deployment-managed guild settings and denial messaging remain available on a dedicated settings page.

Implementation

Validation

  • Missing-day chart behavior and per-user VPN collapsing are covered by apps/web/src/lib/admin-metrics.test.ts.
  • Coordinate parsing, the clear/hosting map policy, backward-compatible ProxyCheck network parsing, normalized location grouping, projection, count badges, complete grouped tooltips, linked markers, semantic network columns, text fallback, and attribution are covered by the user-location and user-world-map tests.
  • The full test suite passes with 106 tests across 36 files; web type checking and lint pass.
  • The Next.js production build succeeds and reports the dashboard and database-backed console pages as dynamic server-rendered routes.

Related Stories