# 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 ```python 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 1. **Backend:** Update User model + seed data + new endpoints 2. **Coach Dashboard:** Retool to single-sport 3. **AD View:** Create new page 4. **Test:** Verify with different coach logins --- ## Questions for Matt 1. **Coach sport assignment:** Manual by AT? Self-selected? Imported from SIS? 2. **Assistant coaches:** Do they see full team or position group only? 3. **AD permissions:** Can AD edit cases, or view-only? 4. **Phase 1 priority:** Coach retool first, AD view second?