Building a Rotation Program (7-Day Cycle)

Drag workout templates onto a Mon-Sun cycle and pick how many weeks it repeats.

trainer guide/programs/new
What this is for: Build the program you'll actually assign — a 7-day rotation that loops for N weeks.

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.

  1. Click Programs in the sidebar to see your programs.
  2. Open the menu on a program card and choose Edit Program.
  3. The builder shows seven day slots, Monday to Sunday. Empty slots are rest days.
  4. 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

  1. Open Programs in the sidebar (/programs).
  2. Click Create Program. You land at /programs/new.
  3. 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.
  1. The cycle builder shows seven slot cards: Mon, Tue, Wed, Thu, Fri, Sat, Sun.
  2. From the WorkoutTemplatePicker on the right, drag a template onto any day slot. The slot now shows the template name with a small icon.
  3. Drag templates between days to reorder.
  4. Empty days = rest days (clients see "Rest day" on those dates).
  5. The ProgramCyclePreview strip below shows what weeks 1..N look like — useful sanity check.
  6. 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 mode edit.
  • 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/new and /programs/[id]/edit.
  • Component: ProgramCycleBuilder.
  • API: POST /api/programs (cycleSlots[7] payload).
  • Migration script for legacy programs: scripts/migrate-programs-to-cycles.ts.
Was this article helpful?