Exercise Programs
The exercise programs library is where you build strength and resistance programs as templates, then assign them to clients. Each program is a multi-week structure of workout days, and each workout day is a list of exercises with set/rep/load configurations.
The library
Coach → Exercises opens the library. It has:
- Two tabs — your templates vs. assigned client programs
- Search
- Difficulty filter — beginner / intermediate / advanced
- Sharing filter — your programs vs. shared from teammates
- Client filter — filter assigned programs to a single client
- List / grid view toggle
First-time seeding
The first time you open the library, the app seeds a starter set of templates so you have something to start from. You’ll see a “Setting up your starter program library…” loader during this one-time setup.
The current starter templates are:
- StrongLifts 5x5 — beginner strength template
- Full Body 3-Day — beginner general fitness template
- Home Gym Bodyweight Split — beginner general fitness template
- Upper/Lower 4-Day Split — intermediate hypertrophy template
- Push/Pull/Legs 6-Day — intermediate hypertrophy template
- Bro Split 5-Day — intermediate hypertrophy template
Per-program actions
From any program row or card:
- Assign — open the assignment modal to give the program to one or more clients
- Edit — open the program builder
- Duplicate — copy the program as a new template (with a confirmation step)
- Share / Unshare — make the program visible to other coaches in your workspace
- Delete — destructive, with confirmation
Building a program
The program builder is a stepped flow:
- Basics — name, description, difficulty, goal
- Structure — define phases and weeks. Each program can have multiple phases.
- Schedule — lay out workout days within each week
- Review — final check before saving
For each workout day, you add exercises and configure sets — number of sets, target reps (a range or an exact count), target load, rest time. The builder supports dragging to reorder both exercises within a day and days within a week.
Reps: range vs. exact
Tap an exercise’s reps button to open the reps editor. It has two modes:
- Range — min/max, e.g.
8-12. Presets cover the canonical schemes (Strength 5-10, Hypertrophy 8-20, Endurance 15-25, General 10-15). This is the default. - Exact — a single fixed rep count. Use this for science-backed prescriptions where the rep target is precise (e.g., heavy triples at
3).
Switching modes clears the other field set so each set unambiguously describes one prescription. Auto-progression won’t modify fixed-rep sets — the coach picked the number on purpose, so the system only adjusts weight and RIR, never reps.
Warmup sets
Each exercise has a flame icon that opens the warmup picker. Pick one of four science-backed templates and the warmup rows prepend to the working sets, with weights resolved as a percent of the first working set’s target load:
| Template | Use for | Prescription |
|---|---|---|
| Compound · heavy | Squat / bench / DL / OHP at RPE 8+ | 50% × 5, 70% × 3, 85% × 1 |
| Compound · moderate | Hypertrophy ranges (working sets <80% 1RM) | 50% × 5, 70% × 3 |
| Isolation | Curls, lateral raises, etc. | 50% × 8 |
| Bodyweight / machine | Rep-only ramps (no weight math) | 5, then 7 reps |
The client sees warmup rows visually distinct (amber “Warm” badge) with the resolved weight pre-filled. Warmups are excluded from volume totals, the share-image summary, auto-progression triggers, and e1RM history. During a deload phase warmups are stripped from the workout entirely — deload weeks don’t need ramp prep.
Time-based exercises
Cardio and isometric exercises track duration instead of weight × reps. Two triggers:
- Auto — library exercises tagged
cardioorisometricdefault to duration mode at creation. The reps button becomes a duration button showingmm:ss. - Manual — the Timer icon on any exercise toggles duration mode on/off regardless of the library tag. Use this for full-body cardio gear (ski erg, battling ropes, fan bike) that ExerciseDB tags as
strength, or for isometric holds whose library tag is generic.
The duration picker has presets (0:30, 1:00, 2:00, 5:00, 10:00, 15:00, 20:00, 30:00) plus a custom mm:ss input (bare integers parse as seconds). Toggling back to reps re-seeds a default rep range from the program goal.
Duration sets opt out of warmups, drop sets, AMRAP, and auto-progression — same exclusions as warmup sets.
Phases
Programs can be organized into phases (training blocks) — for example, a 12-week program might have an accumulation phase, an intensification phase, and a deload phase. Each phase has its own configuration card and timeline view, with its own duration, focus, and RIR progression.
Different exercises per block. When periodization is on, the Schedule step shows a tab for each block plus a Base tab. By default every block runs the Base block’s exercises (so a block changes only intensity/RIR, not movements). To rotate movements for a specific block — e.g. swap variations in weeks 5–8 — open that block’s tab and choose Customize exercises for this block; it then keeps its own weekly schedule. Use Reset to base to drop the customization and go back to inheriting the Base block.
During a deload block, sets and working weights are automatically reduced — leave the exercises inheriting the Base block and let the program apply the cut.
Volume landmarks
The builder has a volume landmarks section for setting per-muscle-group volume targets (MEV, MAV, MRV-style). The builder uses these to give you visibility into per-muscle-group volume as you add exercises.
Exercise search
When adding an exercise to a workout day, the search modal opens. You can filter by:
- Muscle group (target muscles, secondary muscles)
- Equipment (barbell, dumbbell, cable, etc.)
- Body part
Each result shows an exercise image and a details view (description, instructions, muscle pairings). Custom exercises (see below) appear in this search alongside the built-in library.
Substitutions
Each programmed exercise can be substituted — useful when a client doesn’t have the equipment, or you want to vary the stimulus. The substitution modal shows alternatives based on muscle group and equipment.
Supersets
Pair exercises into a superset so the client alternates between them — common for time-efficient hypertrophy or antagonist pairings. In the Schedule step:
- Tap Superset above the exercise list to enter selection mode.
- Tick two or more exercises in the same workout day.
- Tap Group as superset.
Selected exercises move next to each other and are labelled A / B / C… for the client. The client view groups them visually so the rotation is unambiguous. To break the pairing, tap the ungroup icon next to any member.
Copying and moving
You can reuse work across the week instead of rebuilding it:
- A single exercise — open an exercise’s menu and choose to copy or move it to another day. Copy leaves the original in place; move relocates it.
- A whole day — use the copy/move day button in the day header to send the entire day’s exercises to another day. Copy duplicates them onto the target; Move relocates them and leaves the original day as a rest day.
Either action can target a rest day — the target is automatically switched to a workout day when it receives exercises. If the target day already has exercises, you’re asked to confirm before they’re replaced.
Drop sets
Each exercise’s last set can be configured as a drop set finisher. Tap Add drop set finisher under the rep range on any exercise card and:
- Add one or more drop steps.
- For each step, choose % (percent reduction from the top set’s actual weight) or wt (an absolute weight) and a target rep count.
At log time the client sees the drops as sub-rows beneath the parent set, with the reduced weight pre-filled from the prescription. Drop step reps and volume roll up into your client’s program totals; the heaviest-set metric still uses the top set.
Custom exercises
Coach → Exercises → Custom is a separate library for exercises you create yourself. The page is two-pane: a list on the left, a preview on the right. On mobile the preview opens as a drawer.
Custom exercises become available everywhere the built-in library is: exercise search, program builder, substitutions, and the workout logger. They search by name and filter by muscle and equipment just like built-in exercises.
Creating a custom exercise
Click Create exercise to open the form. Mobile renders it as a bottom drawer; desktop as a centered modal. Required fields are marked with a red asterisk.
Required:
- Name — short, unique, scannable. Used in program builders and the client’s workout log.
- Video URL — a YouTube or Vimeo link demonstrating the movement. The form accepts the standard YouTube watch URL,
youtu.beshort links, YouTube Shorts, the YouTube embed URL, and any standard Vimeo link. Anything else is rejected on submit. The video appears inline in the exercise details view and on the client’s workout screen. - Exercise type — pick Strength, Cardio, or Isometric. Cardio and Isometric exercises default to duration-mode tracking (mm:ss) in the program builder; Strength uses the standard weight × reps prescription. You can override per-exercise later via the Timer toggle in the program builder.
- Primary muscle — pick one muscle group: chest, back, shoulders, biceps, triceps, forearms, core, quads, hamstrings, glutes, calves, abductors, adductors, or neck. The exercise search and muscle-group filter use this to surface the exercise.
Optional:
- Secondary muscles — multi-select from the same muscle list. Used by the substitution finder when offering alternatives.
- Equipment — multi-select from bodyweight, barbell, dumbbell, kettlebell, cable, machine, resistance band, medicine ball, stability ball, pull-up bar, bench, foam roller, or “other”. Drives the equipment filter and substitution matching.
- Instructions — numbered step-by-step cues (form, setup, breathing, common mistakes). These render in the exercise details view and the workout logger. Add as many steps as the movement needs.
Editing and deleting
The same form opens in edit mode from the preview pane on the Custom library page. The submit button reads “Save changes” instead of “Create exercise”. Edit is only enabled when you have permission to modify the exercise; custom exercises shared from another coach in your workspace may be read-only.
Delete is destructive and confirms before removing. Clients with an active program that references the deleted exercise still see the historical name (the program snapshot is preserved), but the exercise won’t appear in new searches or substitutions.
Assigning a program
The assignment modal opens from any program in the library. From there:
- Pick one or more clients
- Set the program’s start date for each client
- Confirm
Assignment creates a client program — the active copy that tracks the client’s actual logged work. The template you assigned remains unchanged. Editing the template later doesn’t propagate to existing assignments.
Logging vs. periodization
When a client logs a workout, the system records actual sets, reps, load, and (if the program has periodization enabled) RIR — Reps In Reserve. The PT Mode session also captures this data; see PT Mode.
The intra-workout progression button on a logged exercise lets you (or the client) auto-calculate the next set’s target load based on the previous set’s performance — a small affordance for runtime adjustments.
Workout sharing
When a client finishes a workout, they get a Share option that generates a clean image summary (workout name, exercises completed, set/rep totals, branded with the workspace colors). The image is shared through:
- iOS / Android app — native share sheet (Messages, Instagram, etc.)
- Web — browser share API where supported; falls back to downloading the image
This is client-facing; coaches don’t share workouts on their clients’ behalf. See For Clients → Exercises for the client-side experience.