“The user will read the screen carefully and pick the right option from a menu.”
You don’t, and they shouldn’t. You’re four sets into a 90-minute squat day. You are not reading anything carefully.
Mid-workout, you’re tired. Your CNS is taxed, your fingers are chalked, your patience is thin. This isn’t a complaint — it’s the working state. And it’s the reason most workout apps fall apart at the rack.
flexRep is built for the version of you mid-set, not the one reading this on a couch. Every surface optimizes for the same thing: fewer decisions, fewer taps, no questions.
Three taps to log a set. Two of them optional.
Two assumptions, one number, one design discipline. Why the logger has to be quiet under load.
The standard workout-app pattern asks you to make ten micro-decisions for every set: which exercise, which set type, which weight unit, did you mean warmup, do you want to track RPE, do you want the timer to start, are you sure? Each one is small. Together they're the reason you stop logging by lift number five.
“The user will read the screen carefully and pick the right option from a menu.”
You don’t, and they shouldn’t. You’re four sets into a 90-minute squat day. You are not reading anything carefully.
“The user is mid-set, tired, distracted, and one slip away from logging the wrong thing. The app should make the right thing the easy thing.”
Pre-fill everything we can. Make every action confirm itself. Make every mistake easy to fix. Then get out of the way.
The analytics and methodology underneath flexRep are deep — but you should never feel that depth at the rack. Mid-set you are tired, distracted, and your blood is busy elsewhere. The app is designed for that version of you, not the version reading this on a couch.
Five stances baked into the surface, and three calibrated lenses to wear on top of them.
Each principle exists because we watched ourselves drop the phone, mis-tap the +45, accidentally log a deload as a working set, or forget which set we were on. The fixes aren't features — they're stances baked into the surface.
Open the app at the gym and the next set is already on screen — same weight, same reps, same RPE as last time. "Logged" is one tap from "showed up." Decisions are friction.
Weight and reps are the heroes, set large enough to read across the rack. Plate buttons say "+45," not a glyph to decode. Nothing on the primary surface needs a manual.
Your last exercise is selected. Your last weight is loaded. Your last reps and RPE carry over. The app assumes you’re doing what you were doing twenty minutes ago — because you almost always are.
Tap a plate and the weight settles. Tap Log and the receipt slides in. The rest timer starts on its own. Nothing is silent. Nothing is "wait, did that work?"
Tapped the wrong plate? Tap a smaller one. Logged a set you didn’t do? Swipe-left. Need to edit a set from four lifts ago? Tap it. The cost of a mistake is one gesture, not a dialog.
Quick Log is the welcoming default. The Classic logger is the full surface — sets, RPE, tempo, supersets, routine targets. On top of Classic, a density lens decides how much shows at once, from a clean working view all the way to every field at thumb-reach. No paywall between them — flip in Settings any time.
Default for every fresh install. Walks the welcoming path.
For people running programs. The full surface, calibrated.
The same Classic logger with the detail lens turned all the way up — every field at thumb-reach.
What we removed from the path, what one logged set looks like end-to-end, and the ten one-gesture moves the surface knows.
A side-by-side count of what stands between you and a logged set. Each row is something the app could either ask, or assume. flexRep assumes — until it has reason not to.
Each green check is something the app did so you wouldn’t have to. Each one is reversible if it guessed wrong — the cost of the wrong default is a single gesture, not a re-entered set.
Six rows. Note how many of them involve you doing anything at all.
Total finger presses across one logged set: 1. The Log button. Everything else either happens automatically or is the same as it was last time.
No menus to navigate. No three-tap chains. If you find yourself reaching across the screen with both thumbs, we got something wrong.
Tap the Log button. That’s the whole gesture.
Swipe-right on the most recent receipt row.
Swipe-left on the receipt row.
Tap the receipt row to expand it; weight and reps become editable inline.
The undo banner appears for several seconds after every log. One tap reverses it.
Tap Log with a noticeably lighter weight; warmups are auto-tagged. Or tap the warmup chip to force-flag.
Tap +Drop on a receipt row; the next logged set inherits the drop-set tag.
Long-press on the weight number; a numeric keypad floats up. Tap-out to dismiss.
Tap the exercise name at the top; the picker opens with your most-used exercises first.
Tap the rest pill in the status bar. It can also be paused, reset, or extended in 30-second bumps.
The opinions are loud. The dials underneath are quieter — and entirely yours.
The default surface is opinionated, because defaults are the surface most users will ever see. Underneath, every visible element, every behavior, and every voice can be tuned to your training style — without ever cluttering the primary screen.
The toggles you'll reach for most often live at the top. The ones you'll touch twice live under 'Advanced'. Nothing important hides under a long-press on a chart axis.
Every mistake recoverable in one gesture. Every feature we refused to ship — and why.
Mid-workout misfires are not bugs — they are the working condition. We treat reversibility as a primary feature, not as an afterthought.
FIX Tap a counter-plate. +45 then immediately –45 returns you to where you were. The weight scrubs visually; the haptic acknowledges.
FIX Undo banner. Or swipe-left on the receipt row. Both work for a few minutes after the fact; nothing about the session reflows.
FIX Tap the exercise name to switch. Sets already logged stay attached to the original exercise; new sets attach to the new one.
FIX Open the app on power-back. Your workout is intact: pause state, rest timer end-time, all sets — saved at every event, never at every five seconds.
FIX The app notices and auto-ends it for you with an annotated flag. Analytics know to handle annotated sessions distinctly. You don’t have to remember.
FIX Long-press behaviors are explicit and never destructive. The worst thing that happens is the numeric keypad appears; tap-out to dismiss.
Every workout app's primary screen accumulates noise over time — buttons sneak in, 'social' widgets get bolted on, a settings shortcut earns a spot for no good reason. We keep an explicit 'do not add' list.
That’s the brief. Every screen, every setting, every animation, every haptic — graded against the question: would this still work on set 47?
Quiet under load.