
Beast Protocol
A native iOS training app for intermediate and advanced lifters. No videos, no photos, no streaks, and a schedule that suggests instead of insisting.
- Track
- built
- Category
- tool
Tools
- SwiftUI
Beast Protocol is a training app for people who already know how to lift. It is deliberately narrow. If you need to be taught the movements, this is not for you, and it does not pretend otherwise.
A personal project, and a native iOS app built on SwiftUI for iOS 17 and up.
The premise
Most training apps are built for beginners and then sold to everyone. So they carry a video library, form photos, a social feed, streaks, badges. For an intermediate or advanced lifter almost all of that is noise you scroll past to reach the one number you came for.
I wanted the opposite. No media at all. Just short method cues on the exercises where technique actually decides the outcome. Tempo, positioning, where to stop. The kind of thing a good coach says once and you keep forgetting anyway.
The measure of success is how little you use it. Open it, see the session, work, leave. It should not be interesting enough to come back to between sessions.
The plan suggests, it does not insist
I train across lifting, cycling and running. A weekly schedule cannot know what my body did yesterday. So today's screen opens on the session that fits, and lists every other session right underneath with the context to choose. Last done, done this week. No menu, no settings trip, no dialog. If you switch days mid session, your progress is parked and comes back when you return.
The quiet mechanics
Set counting is optional. One tap still marks an exercise done, the way it always did. If you want per set rest timing, there is a small chip for it. Nobody is forced into four taps to do one thing.
Supersets behave like supersets. No rest inside the pair, and the rest bar hands off to the partner exercise instead of vanishing.
Rest timers survive a locked screen through time sensitive notifications, so the phone can stay in your pocket.
The stamp
A finished session gets stamped, like a loyalty card at the counter. The stamp records that it happened, in ink. It shows no count, gives no reward and never asks for more. The app has no streaks, no badges and no week counters, and this is its answer to them.
There are ten stamps. Which one you get comes from a hash of the date and the session, so it looks random from day to day, but one workout always gets the same stamp at the same lean, wherever it shows up and even if you finish it again. Nothing new is stored.

One workout, one stamp, three places: slammed down on the finish screen, pressed off the corner of Today's done card, and turned into a seal on the week card. 
Ten stamps, each a word of three to nine letters over a subline. Every one lands at the same size, so a long word shrinks to fit. 
On Today's done card the stamp sits at 60% behind the content, pressed off the corner so the card crops it. 
For the week card each stamp becomes a round seal. The session name prints white in the middle and the word and date run round the rim, spaced to fill the whole circle. 
A day on the week card is in one of four states: rest, planned, today or stamped. 
The week card is a stamp card. Seven circles that never move, filling up with ink. No progress bar and no score. 
The ink wear is a fixed scatter of specks, so the stamp reads pressed rather than printed. The date stays clean so a speck never eats a digit. 
Thursday morning: three seals in and today's session suggested. 
The stamp lifts, slams down and lands with a haptic hit. With Reduce Motion on, it is simply there. 
Back on Today the fourth seal is in, and the done card carries the same stamp. The stamp comes from the date and the session, so one workout always gets the same one.
How it is built
The program is generated from a single source file into JSON, so the training content is never hand edited. The data model is tiered, where a long session is a superset of a medium one and a medium of a short one, and session length is just a filter. A test enforces that invariant.
State lives in one observable store with an injectable clock, which makes date behaviour testable instead of hopeful. Persistence is plain Codable JSON. Everything works offline.
What changed
The first screenshots here are from 7 September. Since then:
- Today. The strip of days became a week card that fills up with stamps. No streak and no score.
- Sets. You can tap sets off one by one. It is entirely optional, and it is there to reduce cognitive load.
- Logging. The plate system shows the bar loaded for the weight you type, which takes more load off the session.
- Rest. A Live Activity puts the timer on the lock screen, because you usually lock your phone during an exercise.
- Finishing. A stamp lands where the tick used to be, with a strong haptic.

Today, 7 September. 
A session, 7 September.
What I took from it
The hard part was not the code. It was saying no to things that look like value. Every video, badge and chart I did not add made the app better for the person it is actually for. And every time I reached for a menu to solve flexibility, the right answer was to put the choice in place instead.
It is in open beta on TestFlight.
Screens


The one thing it asks for, because it is the one thing it cannot work out on its own. 
The plate system takes cognitive load off the session again. That is the whole idea of the app. 

You usually lock your phone during an exercise. The Live Activity means you can still see what is going on. 
Sets can be tapped off one by one. It is entirely optional, and again it is built to reduce cognitive load. 
The rest bar hands off to the superset partner instead of vanishing, and it survives a locked screen. 
There are ten different stamps, and each lands with a strong haptic to add to the dopamine rush of finishing. 
More apps

KetoGen
Built to keep keto interesting, not just compliant. Meals from a curated library or generated on-device, with macros the language model never touches.
tool · soon · wip · read it
Bespoke
A pixel art bar for the end of the day. You watch the drink being made, and then you get the real recipe to make it at home.
tool · soon · wip · read it
Serenity
A calm app of bedtime stories for adults, baked in or written on demand, each with a scene composed from its content. No navigation bar, just story cards.
experiment · soon · wip · read it
