Building your own workout program comes down to five decisions, and Zyra Workouts makes each with a fixed rule you can copy by hand: pick a split; take round(minutes ÷ 12) exercises per session (3 to 8); give every muscle on the day's roster one compound exercise first; set sets, reps and RIR from the goal; run it for six cycles with an optional lighter last cycle. Nothing in the generator is hidden — the same answers always produce the same program — so this page is both a guide and a description of what the app does.

Zyra Workouts is in development and not yet on the App Store; the screens described here may change before release.

Pick a split

A split is how the muscles are shared out across the week's sessions. The generator offers three, each with a fixed roster per day:

SplitDay templates and rostersDays per week it accepts
Full bodyone template: quads, chest, back, shoulders, hamstrings, core2–6
Upper / lowerUpper: chest, back, shoulders, biceps, triceps · Lower: quads, hamstrings, glutes, calves, core2–6 (alternating)
Push / pull / legsPush: chest, shoulders, triceps · Pull: back, biceps, core · Legs: quads, hamstrings, glutes, calves2–6 (cycling)

Training days are spread evenly through a seven-day layout by floor(i × 7 / days): three days land on days 1, 3 and 5 (train · rest · train · rest · train · rest · rest), four on days 1, 2, 4 and 6, six on days 1–6. When a template repeats in the week the days are lettered (Upper A, Upper B).

D1D2D3D4D5D6D7Full body · 2 daysFullRestRestFullRestRestRestFull body · 3 daysFullRestFullRestFullRestRestFull body · 4 daysFullFullRestFullRestFullRestUpper/lower · 4 daysUpperLowerRestUpperRestLowerRestPush/pull/legs · 3 daysPushRestPullRestLegsRestRestPush/pull/legs · 6 daysPushPullLegsPushPullLegsRest
Fig. The week layouts the program generator produces — training days are spread as evenly as the count allows (slot = floor(i × 7 ÷ days)), then the split's day templates are dealt in order (Full body; Upper, Lower; Push, Pull, Legs). Three days become T·R·T·R·T·R·R; six days leave one rest day. The generator's rule, shown with its own function — not a claim about which layout works better.

The rosters explain a lot of what the generated programs look like. The full-body roster has no biceps, triceps, glutes or calves as *primaries*, so those groups are covered through secondaries (rows credit biceps at half, squats credit glutes at half) unless you add an isolation. Pick the split whose rosters name the muscles you care about; the balance score will tell you afterwards which ones went short. Six ready-made versions are on the programs pages — for example the 3-day full body and the 4-day upper/lower.

Exercises per session — minutes divided by twelve

The session length sets the exercise count:

exercises = clamp(round(minutes / 12), 3, 8)

SessionExercises
30 min3
45 min4
60 min5
75 min6
90 min8

Twelve minutes per exercise is the budget for warm-ups, three or four working sets and the rest between them. It is a planning constant, not a measurement of your gym; a 60 s isolation exercise finishes faster, a 180 s squat slower, and the average lands near twelve. The floor of 3 stops a short session becoming a single exercise; the cap of 8 stops a long session becoming a list.

One compound per muscle first

Filling the slots happens in two passes over the day's roster.

Pass 1 walks the roster in order and gives each muscle one compound exercise — the first in the catalog whose primary muscle matches and which has not been used yet. If no compound exists for that muscle (calves, for instance, have only isolation exercises in the catalog) it falls back to an isolation exercise, unless you have deprioritised that muscle. Pass 1 stops when the session is full, which is why a 30-minute full-body session (3 slots) covers only the first three roster muscles — quads, chest, back — and leaves shoulders, hamstrings and core to secondaries.

Pass 2 fills any remaining slots with isolation work: first for each of your focus muscles that appears in the roster, then cycling through the roster, skipping deprioritised muscles.

Applied by hand to a 60-minute full-body day (5 slots): back squat for quads, barbell bench press for chest, barbell bent-over row for back, barbell overhead press for shoulders, barbell Romanian deadlift for hamstrings — and the session is full before core, which a 75-minute session would add as the plank. The order of the roster is the priority order; the muscles at the front are the ones a short session keeps.

In plain terms: big movements for every muscle on the list, in list order, then small movements in the gaps.

Sets and rep targets by goal (table)

Every exercise gets the same target structure — sets × rep range at an RIR — from the goal and whether the exercise is compound or isolation:

GoalCompoundIsolation
Strength4 sets · 3–5 reps · RIR 23 sets · 6–8 reps · RIR 2
Hypertrophy3 sets · 6–10 reps · RIR 23 sets · 10–15 reps · RIR 1
General3 sets · 8–12 reps · RIR 23 sets · 8–12 reps · RIR 2

Then experience adjusts the set count: beginner −1, advanced +1 on compounds only, with a floor of 2. So a beginner's hypertrophy program is 2 sets everywhere; an advanced strength program is 5 sets on compounds and 3 on isolations. RIR is reps in reserve — how many more you could have done — and the RIR / RPE converter maps it to the 1–10 effort scale if you think in RPE.

Where the totals land against the weekly landmarks depends on the split and the days: a 3-day full-body hypertrophy week at 3 sets gives each roster muscle 9 primary sets, under the 12–14 landmarks for chest, back, shoulders and quads, with secondaries making up part of the gap. That is the honest shape of the generator's output — it is a session budget applied consistently, not a week reverse-engineered to hit every landmark. Adding a day or a focus muscle is how the count moves.

Cycles and the deload

A generated program has 6 cycles (a program built from scratch defaults to 7 and accepts 1–52). Periodization is on: the RIR target falls across the block — 3, 3, 2, 2, 1, 1 for a base of 2 — while sets and rep ranges stay fixed, as the RIR ramp page sets out. With the deload option on, the sixth cycle instead gets one fewer set at base + 2 RIR; the deload page covers the positions and the design's modes.

Rest per exercise comes from the catalog default (60–180 s by movement) and can be overridden per program exercise — see how long to rest. Once the block is done the choice is to repeat it, which restarts the ramp, or to build the next one with what the logs showed.

The short version

Split → clamp(round(minutes ÷ 12), 3, 8) exercises → one compound per roster muscle, then isolations (focus muscles first) → sets and reps by goal (4/3 sets, 3–5 / 6–10 / 8–12 reps for compounds, RIR 1–2), −1 for beginners, +1 on compounds for advanced → six cycles with the RIR ramp and an optional lighter sixth. Those are the generator's rules in full, and the six program pages show them applied.

Educational overview only — training guidance, not medical advice.