Six-layer graph. No strings.
Program. Mesocycle. Microcycle. Routine. Routine exercise. Per-set prescription. Each one is a real entity with a stable identifier — and every analytic touches the graph, not a free-text field on a workout row.
Most apps store your block as a string — "Hypertrophy 1," "5/3/1 week 3," whatever you type. flexRep models it as Program → Mesocycle → Microcycle → Routine → exercises → per-set prescriptions. Every analytic reads from the graph. Block comparison knows what week belonged where. Stall detection knows when a deload happened. You see the inline target on every receipt row.
You run blocks. You don't need the app to design them. You need the app to know which week is week three of which mesocycle, what was prescribed, what you actually did, and what changed between this block and the last one.
Program. Mesocycle. Microcycle. Routine. Routine exercise. Per-set prescription. Each one is a real entity with a stable identifier — and every analytic touches the graph, not a free-text field on a workout row.
When you log, the target gets stamped in. The receipt shows the delta inline — "Bench 5 × 230 · target 5 × 225 · +5." Green when you exceed, red when you miss. The number tells the truth before you read it.
Pick any two mesocycles, two date ranges, or last-vs-prior. See the deltas: top e1RM per exercise, total volume, average RPE, fractional muscle distribution. Two taps from Insights.
Every layer of the program is a real entity, indented under the one above it. The deload week reads in italics. The prescribed set shows "target 5 × 225" inline; the logged set lands underneath as a +5 green delta. Two taps from Insights opens the same view for any prior block.
Out of the The Program Runner's thirty-six daily features, these are the ones that earn their seat at the rack.
Program → Mesocycle → Microcycle → Routine. Stamped into every set. Read by every analytic.
See itTwo mesocycles, two date ranges, or last-vs-prior. Deltas on e1RM, volume, RPE, fractional muscle distribution.
See itWhen a microcycle has the deload flag set, stall detection knows. No false positives during a planned drop.
See itEvery receipt row shows the prescription and the delta you put up. The +5 lands against the plan, not in a vacuum.
See itStamped prescriptions become a chart. See exactly where you hit, where you came up short, where you exceeded plan.
See itBoostcamp, Strong, and 5/3/1 Workout Log all approach periodization differently. flexRep's pitch is that it doesn't prescribe — it just remembers, structurally, what was prescribed.
Numbers that hold under load.
Volume the literature would recognize.
Hand a clean JSON to anyone.
Train hard. Train smart. Train forever.
Show up. Tap. Lift.
Hangboard edges and V-scale grades, first-class.
Sinclair, not Wilks — a separate scoring discipline.
Yokes, sleds, carries, atlas stones — modeled.
Joint angles, per-set grips, fine forearm radar.
Strength + conditioning, one logger, honest math.
All of this, on your device. In your data. No account required to start.