Programs
Program list, detail view, and workout builder. Trainers create and manage programs; clients view assigned/enrolled programs. The builder supports drag-and-drop workout organization with real-time auto-save.
Route Information
Program List
Route: /programs
File: programs/index.tsx
Max Width: max-w-6xl
Program Detail
Route: /programs/$programId
File: programs/$programId/index.tsx
Max Width: max-w-4xl
Program Builder
Route: /programs/$programId/edit
File: programs/$programId/edit.tsx
Max Width: max-w-6xl
Program List (Trainer View)
Grid of program cards with status tabs (All, Draft, Published, Archived). Header includes page title and "Create Program" CTA button.
Programs
Create and manage your fitness programs.
Shred 90
Published12 weeks · Intermediate
Home HIIT
Draft6 weeks · Intermediate
Strength Foundations
Published8 weeks · Beginner
Empty State
No programs yet
Create your first program to get started.
Workout Builder
The builder uses a tree structure with drag-and-drop via @dnd-kit. Workouts contain exercises with sets/reps/tempo/notes. Auto-saves via concurrent-safe mutations with shared mutationKey.
Shred 90 — Workouts
SavedDay 1 — Upper Body Push
5 exercises
Bench Press
4 sets × 8-10 reps · 3010 tempo
Overhead Press
3 sets × 10-12 reps · 2010 tempo
Incline Dumbbell Fly
3 sets × 12-15 reps · 2011 tempo
Component Inventory
| Component | Source | Usage |
|---|---|---|
| ProgramCard | programs/-components/program-card | Grid card with status, rating, price |
| WorkoutBuilder | programs/-components/workout-builder | Drag-and-drop workout tree |
| ProgramMetadataForm | programs/-components/program-metadata-form | Title, description, duration, difficulty |
| ExercisePickerDialog | programs/-components/exercise-picker-dialog | Search and add exercises |
| SaveStatus | programs/-components/save-status | Auto-save indicator (Saving.../Saved) |
| Tabs / TabsList / TabsTrigger | @/components/ui/tabs | Status filter tabs on list page |
| SortableItem | programs/-components/sortable-item | dnd-kit sortable wrapper |
Data Requirements
Queries
myProgramsQueryOptions— list of trainer's programsbuilderKeys.builder(programId)— full builder tree
Mutations
useDeleteProgram()useUpdateProgramStatus()useAddWeek(),useAddWorkout(), etc. (concurrent-safe via shared mutationKey)
Responsive Behavior
Desktop
3-column program grid. Builder shows full workout tree. Tabs inline.
Tablet
2-column program grid. Builder full-width.
Mobile
Single column cards. Create button stacks below title. Tabs scroll horizontally.