RTSport β Coach Dashboard Retool + AD View Spec
Date: 2026-05-03
Status: Design Decision β Pending Implementation
Owner: Daedalus (frontend), Socrates (backend API update)
Problem
Current Coach dashboard shows multi-sport roster. Real coaches only manage ONE sport.
Solution: Two Views
1. Retooled Coach Dashboard (Single-Sport)
Scope: One sport, one team, all athletes in that sport
Header:
RTSport π Football (Coach)
β sport selector (dropdown)
Quick Stats:
[ 3 Out ] [ 2 Modified ] [ 45 Cleared ]
Roster Section:
Varsity Football β 50 athletes
Jake Larson π« Out Ankle - Right
Marcus Johnson π« Out Left Knee ACL Tear
Tyler Wilson β οΈ Modified Knee - Left
Brandon Davis β Cleared
Connor Miller β Cleared
...
Tap athlete β detail overlay:
βββββββββββββββββββββββββββββββ
β Jake Larson β
β Varsity Β· Grade 11 Β· WR β
β β
β π« OUT β Ankle - Right β
β Severity: Moderate β
β Phase: Active Rehab (2/4) β
β β
β Milestones: β
β β Initial Assessment β
β β Active Rehab (current) β
β β Return to Play β
β β Full Clearance β
β β
β [Message AT] [View Timeline]β
βββββββββββββββββββββββββββββββ
Actions:
- Message AT (opens chat/email)
- View full timeline (scroll)
Sport Selector:
- If coach has multiple sports assigned, show dropdown
- Default to primary sport
- Switching reloads roster
2. AD View (Multi-Sport Overview)
Scope: All sports in school, summary level
Header:
RTSport π€ AD Overview
School Stats:
Total Athletes: 340
Active Cases: 12
Out Today: 3
Modified: 5
Sport Cards:
ββββββββββββββββ ββββββββββββββββ
β π Football β β π Basketballβ
β 50 ath β β 15 ath β
β 3 Out β β 0 Out β
β 2 Modified β β 1 Modified β
ββββββββββββββββ ββββββββββββββββ
Tap sport card β drill to that sport's coach view
Recent Activity Feed:
β’ 10 min ago β Jake Larson (FB) marked Out
β’ 2 hr ago β Tyler Wilson (FB) restriction modified
β’ Yesterday β Marcus Johnson (FB) case opened
API Changes Required
Coach Model Update
class User(BaseModel):
id: str
email: str
role: Literal["at", "coach", "parent", "ad"]
school_id: str
assigned_sports: List[str] # NEW β coach's sports
assigned_teams: List[str] # NEW β coach's teams
New Endpoints
GET /api/v1/dashboard/coach?sport=Football
β Returns roster for that sport
GET /api/v1/dashboard/ad
β Returns all sports summary
GET /api/v1/roster?school_id=X&sport=Football&team=Varsity
β Already supported, use it
Seed Data Update
Add test coaches:
coach_football@preble.k12.wi.us β Football only
coach_basketball@preble.k12.wi.us β Basketball only
coach_multi@preble.k12.wi.us β Football + Basketball
Implementation Order
- Backend: Update User model + seed data + new endpoints
- Coach Dashboard: Retool to single-sport
- AD View: Create new page
- Test: Verify with different coach logins
Questions for Matt
- Coach sport assignment: Manual by AT? Self-selected? Imported from SIS?
- Assistant coaches: Do they see full team or position group only?
- AD permissions: Can AD edit cases, or view-only?
- Phase 1 priority: Coach retool first, AD view second?