Building a Rotation Program (7-Day Cycle)
Drag workout templates onto a Mon-Sun cycle and pick how many weeks it repeats.
The mental model (read this first)
Every EvoFit program is a 7-day rotation cycle that repeats for a set number of weeks. Picture seven slots — Mon through Sun — and a library of workout templates on the right. You drag templates into the slots you want, leave the rest empty (rest days), and tell the system "repeat this for 8 weeks". That's the entire program.
- Click Programs in the sidebar to see your programs.
- Open the menu on a program card and choose Edit Program.
- The builder shows seven day slots, Monday to Sunday. Empty slots are rest days.
- Open Program Preview to see how the cycle repeats over the weeks.
This is the same mental model Trainerize and Everfit use. It replaces the older Week 1 → Week 2 → Week 3 linear builder (which is now deprecated and only viewable on legacy programs flagged isLegacy=true).
Step-by-step
- Open Programs in the sidebar (
/programs). - Click Create Program. You land at
/programs/new. - Fill in the top section:
- Program name (e.g. "Hypertrophy Block 1").
- Description — what this program is for, who it's good for.
- Type — Strength, Hypertrophy, Endurance, Powerlifting, Conditioning, Mixed.
- Difficulty — Beginner, Intermediate, Advanced.
- Duration in weeks — how many times the 7-day cycle repeats.
- The cycle builder shows seven slot cards: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
- From the WorkoutTemplatePicker on the right, drag a template onto any day slot. The slot now shows the template name with a small icon.
- Drag templates between days to reorder.
- Empty days = rest days (clients see "Rest day" on those dates).
- The ProgramCyclePreview strip below shows what weeks 1..N look like — useful sanity check.
- Click Save. POST to
/api/programs.
How clients see it
- The program is just a definition until you assign it (see Assigning a Program to a Client).
- Once assigned, the cycle starts on the Monday of the week containing the assignment's start date. So if you assign starting Wed, the client sees Wed/Thu/Fri/Sat/Sun of week 1, then a fresh Mon-start for week 2, etc.
- Client's Today's Workout widget pulls whichever template lives on the cycle slot for today.
Editing an existing program
/programs/[id]/edit— same UI, in modeedit.- Edits apply to future sessions. Past completed sessions are immutable.
- Adding a new template doesn't backfill — clients see the change starting on the next occurrence of that day.
Legacy multi-week programs
If a program was created before April 26, 2026 with non-uniform weeks (e.g. deload-week patterns), it's flagged isLegacy=true. On /programs/[id]/edit you see a Rebuild in new editor banner instead of the cycle builder. Click it to start a fresh 7-day cycle for that program.
Common pitfalls
Where to find this
- Page:
/programs/newand/programs/[id]/edit. - Component:
ProgramCycleBuilder. - API:
POST /api/programs(cycleSlots[7] payload). - Migration script for legacy programs:
scripts/migrate-programs-to-cycles.ts.
