DocsCoach Features

Dashboard, sessions, students, drills, and more

Coach Features

The coach dashboard is the primary interface. All coach-facing pages are wrapped in the DashboardLayout component with a collapsible sidebar for navigation.

Dashboard

Route: /dashboard

The dashboard is a widget-based overview of the coach's activity. It includes:

  • HeroStats -- Key metrics: total students, total sessions, average ride score
  • SessionFeed -- Recent sessions with status indicators
  • AthleteHeroCard -- Featured athlete spotlight with recent activity
  • PerformanceChart -- Ride score trends over time (Recharts)
  • UpcomingSchedule -- Next scheduled lessons
  • QuickActions -- Shortcuts to upload, add student, schedule lesson
  • ConditionsWidget -- Current surf conditions at home break
  • SurfForecastWidget -- Multi-day forecast preview

Sessions

Route: /sessions (list), /sessions/[id] (detail)

Session List

Paginated list of all sessions with:

  • Status filters: complete, processing, uploading, failed
  • Sort by date (newest/oldest)
  • Delete sessions
  • Click to open session detail

Session Detail (Coaching Workspace)

The core coaching interface for analyzing session footage:

  • VideoPlayer -- HLS-based video player with frame-by-frame controls
  • AnnotationPanel -- Add text, drawing, and voice annotations at specific timestamps
  • DrawingCanvas -- Freehand drawing overlay on the video frame
  • RideScorer -- Score individual rides across criteria (wave selection, positioning, speed, style, power, flow)
  • AIInsightsPanel -- AI-generated analysis results (see AI Video Analysis)
  • Multi-clip support -- Sessions with multiple clips show a clip selector

Upload

Route: /upload

Two methods for importing session footage:

  1. Direct Upload -- Drag-and-drop or file picker. Files are compressed client-side using FFmpeg WASM before being sent to the AI processing backend. Concurrent upload pool limited to 2 simultaneous uploads.
  2. Frame.io Import -- Browse connected Frame.io accounts, navigate folders, and select video assets for import (up to 10 clips per import).

Both methods create a session record with clips and send footage to Modal for AI analysis.

Students (Athletes)

Route: /students (roster), /students/[id] (detail)

Athlete Roster

  • Searchable list with skill-level filter (beginner, intermediate, advanced, pro)
  • Add Student modal: name, email, age, stance (regular/goofy), skill level
  • Click to view individual student profile

Student Detail

  • Skill Tree -- Visual taxonomy of surf skills with assessed progress levels
  • Ride Scores -- Historical ride scores across sessions
  • Session History -- All sessions the student has been linked to
  • Equipment -- Gear quiver (boards, fins, wetsuits, etc.)
  • Achievements -- Earned badges and milestones

Drills

Route: /drills

A library of exercises categorized by type and difficulty:

  • Categories: Water, Land, Mental, Fitness
  • Skill Levels: Beginner, Intermediate, Advanced, All
  • Full CRUD for creating/editing drills
  • Multi-step instructions (stored as JSON)
  • Drill images for visual reference

Lessons

Route: /lessons

Lesson scheduling with two views:

  • Calendar View -- Monthly calendar with lesson indicators
  • List View -- Sortable list of upcoming and past lessons
  • Assign students, set location/spot, duration, and notes
  • Link drills to lessons for structured session plans
  • Surf condition forecast integration for scheduled dates

Analytics

Route: /analytics

Recharts-powered analytics dashboard with date-range filtering:

  • Student growth over time
  • Session frequency and trends
  • Ride score distributions and averages
  • Skill assessment progress across the roster
  • Lesson and drill assignment activity

Training Plans & Goals

Route: /plans

  • Training Plans -- Multi-week structured programs per student with assigned drills and schedule
  • Goals -- Metric-based goals (sessions, scores, skills, drills, waves, custom) with target values and milestone checkpoints

Competitions

Route: /competitions (list), /competitions/[id] (detail)

Full competition management:

  • Formats: Single elimination, double elimination, round robin, expression session
  • Heats -- Create rounds with multiple heats, assign students with jersey colors and seeds
  • Scoring -- Wave-by-wave scoring (0--10 scale), interference tracking
  • Results -- Automatic placement based on best wave scores

Billing

Route: /billing

  • Coaching Packages -- Create packages with pricing, session counts, and duration
  • Subscriptions -- Track active student subscriptions
  • Payments -- Payment history with status tracking (succeeded, pending, failed, refunded)

Other Features

FeatureRouteDescription
Messages/messagesReal-time coach-student messaging with conversation threads
Journal/journalSession journal entries with mood/energy/confidence ratings (1-5)
Highlights/highlightsCurate highlight reels from session clips, public/private sharing
Compare/compareSide-by-side synced video comparison of two sessions
Community/communityLeaderboard (ride scores), community posts with likes
Reports/reports/[id]Shareable session reports (public route)
Settings/settingsCoach profile: name, email, location, home break, bio, avatar
Invite/invite/[token]Student invite acceptance page (public)