Route
/dashboard — Default landing page after login.
Data Sources
| Section | API Endpoint | Key Fields |
|---|---|---|
| KPI Grid | GET /dashboard/kpis | total_nil_value, avg_deal_value, active_deals, budget_remaining, expiring_deals |
| Alert Strip | GET /dashboard/alerts | pending_verification, over_budget_sports, expiring_within_30_days |
| Budget Snapshot | GET /dashboard/budget-snapshot | Per-sport annual_cap vs committed with progress bars |
| Expiring Deals | GET /dashboard/expiring-deals | Deals expiring within 60 days with athlete name, sport, position |
| Reporting Status | GET /dashboard/reporting-status | verified, pending_review, needs_review counts, verification_rate |
Key Behaviors
- Alert strip is dismissible — shows pending verifications, over-budget sports, and expiring deal counts
- Budget bars color-code: sky blue (under 80%), amber (80-100%), red (over cap)
- Expiring deals show days remaining with red badge for 7 days or less
- KPIs are computed from active deals only (not expired/cancelled)
- Budget remaining = total annual cap minus active deal committed spend
- Premium benchmark teaser links to
/benchmarks
File
frontend/src/pages/DashboardPage.vue