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
- Experience-level 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 one of your programs as a new template (with a confirmation step)
- Share / Unshare — make the program visible to other coaches in your workspace. Teammates can assign the shared original or choose Save a copy to create a private, editable version in their own library. Saved copies are independent and remain available if the original is later unshared.
- Delete — destructive, with confirmation
Building a program
The program builder is a stepped flow:
- Basics — name, description, starting rep range, and optional experience level
- Structure — choose the progression pace and define phases or a simple duration.
- 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.
Starting rep range and experience level
The required Starting Rep Range sets the default range for exercises you add. It also supplies the fallback range when an exercise is switched from time back to reps. If you enable periodization after adding exercises, the selected range becomes their base range before phase adjustments are applied. Changing the selection does not otherwise overwrite rep prescriptions you already authored.
The Strength, Hypertrophy, Endurance, and General Fitness choices are convenient range presets. They do not automatically change exercise selection, set count, load, rest time, or tempo. The authored sets and any periodization phases control those details.
Experience Level is optional organizational metadata. It appears on program labels and powers library filtering, but it does not change the prescription or progression behavior.
Progression pace
Both simple and periodized programs use rep-first progression between workouts. In the Structure step, choose how much consistent performance the client needs before load increases:
- Conservative — reach the top rep zone three times
- Moderate — reach the top rep zone twice
- Aggressive — reach the top rep zone once
These are completed workouts the app counts automatically, not confirmation prompts the client has to approve. The app evaluates performance across all completed working sets, so a client does not need a perfect maximum-rep result on every set.
When the selected evidence requirement is met, the next target increases by a small, unit-aware step. The pace changes the number of successful workouts required, not the size of the adjustment.
Reps: range vs. exact
Tap an exercise’s reps button to open the reps editor. It has two modes:
- Range (RIR-led) — 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 for sets where effort determines when the client stops. - Exact (fixed) — a single fixed rep count. Use this when the rep target must stay precise, such as tempo, technique, interval, or heavy-triple work.
Switching modes clears the other field set so each set unambiguously describes one prescription. Entering the same minimum and maximum, such as 12-12, prompts you to use a narrow range such as 10-14 when you mean “about 12.” Exact reps remain fixed through phase changes, although the system can still adjust their load.
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. Completed warmup weight × reps contributes to total training volume, but warmups are excluded from completed-set and rep totals, PR/e1RM history, and all auto-periodization or progression decisions. 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 the selected starting rep range.
Duration sets opt out of warmups, drop sets, AMRAP, and auto-progression — same exclusions as warmup sets.
Warm-up & cool-down blocks
Separately from the per-exercise warmup sets above, each workout day can carry a named warm-up block (performed before the exercises) and a cool-down block (after) — a short list of mobility or stretching movements, each with a simple duration or rep prescription and an optional “each side” toggle. These are mobility prep, not lifts: they’re shown to the client (and in PT sessions) with in-session check-off, and they never count toward volume, the workout summary, or progression.
You author a block right inside the day panel of the program builder, with an inline search limited to mobility and stretching movements.
Reusable block library. Build a warm-up or cool-down once and reuse it across days and programs:
- Save to library — from any day’s block, save it as a reusable block under a name you choose.
- Apply from library — drop a saved block onto any day. Applying makes a copy: editing the library block later does not change days that already used it.
- Manage — the Block Library (from the Programs page header, or search “blocks” in the command palette) lists your saved blocks to create, rename, edit, or delete. A saved block is interchangeable — apply the same one as either a warm-up or a cool-down.
- Starter blocks — four built-in blocks (Upper-body warm-up, Lower-body warm-up, Full-body dynamic warm-up, Full-body cool-down) are available to every coach. “Add to library” saves your own editable copy, or “Customize” opens one to tweak before saving. They also appear directly in the day’s “Apply from library” picker.
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.
How the RIR progression maps to weeks. Set the starting and ending RIR for each phase, and the app distributes the effort target across that block. The phase card previews the exact week-by-week targets as you edit. A single-week phase uses one RIR target for the whole week.
Auto-advance moves the client into the next phase automatically when the current one ends; with it off, the phase waits for you to advance the client manually. The last phase in a program has nothing to advance to — the program simply completes — so its auto-advance toggle is disabled.
How block focus changes the prescription. Accumulation/hypertrophy blocks favor the program’s higher base rep ranges. When a block inherits the Base schedule, Intensification/strength shifts non-fixed ranges toward heavier work, while Peak/power shifts them lower again. The app keeps these adjustments within appropriate safeguards for the block. Deload blocks keep the authored reps but reduce working sets and load. Exact rep targets remain fixed in every block.
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 and uses the rep ranges you prescribe there without adjusting them again. 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
Exercise searches begin after you enter at least three characters. Filters remain available when the search field is empty.
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 the actual sets, reps, and load.
The Stop at chip shows the prescribed RIR (Reps In Reserve), or how many reps
the coach wants left in the tank. On RIR-led sets, the client stops at that effort
even when completed reps land outside the programmed range. The programmed range
guides progression; it is not a prediction or stopping point. A ~ appears only
when exercise-specific strength history and the target load support a calculated
rep estimate. RIR is not entered as a separate number; the app uses logged
performance and the planned effort to inform future targets.
AMRAP tells the app the set went to failure. PT Mode uses the same streamlined
logging model; see PT Mode.
Between workouts, the next load follows the program’s progression pace. The client keeps the same weight while building reps across the prescribed range. Consistent performance in the top portion of the range eventually raises the next target. Repeated difficulty can trigger a small reset instead. Recovery sessions and non-comparable work are excluded so they do not create inappropriate progression changes.
Phases still own rep ranges, RIR, set reductions, and deload intensity. If a phase changes the rep prescription, future targets adapt to the new block. Exact-rep prescriptions remain fixed; the system can adjust their load but not their reps.
During a periodized workout, the app can adjust remaining-set targets conservatively from the client’s logged performance, planned effort and rest, and expected set-to-set fatigue. This helps keep later work inside the prescribed range without requiring the client to enter extra effort ratings. Bodyweight and zero-load movements do not receive automatic load adjustments.
When a reliable exercise-specific estimated max drives the target load,
Why this target? also shows approximately where the client may reach the
prescribed RIR. Until then, the workout labels the coach-authored range as
Programmed range without a ~. The estimate explains the target; it does not
replace the range.
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). Completed timed sets count toward the exercise and set totals without adding reps or weight-based volume. 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.