A training app is only useful if it tells you what to do today and shows you how. That means programmes, not exercise lists, and it means an animation per exercise — at a volume where doing it by hand guarantees inconsistency.
Case studies
Forja — 127 exercises, each one animated
Content at a volume you cannot assemble by hand
The problem
What I did
Tooling before content
The 127 animations and the 21 programmes are generated and validated by scripts I wrote first. The validation is the point: it refuses to write anything if a programme references an exercise that does not exist.
Six languages across content, not labels
A programme name is easy. An exercise cue that has to stay correct — and safe — in six languages is not, and it is why the content pipeline validates rather than just translates.
Guidance by age, 6 to 90
Including a postpartum track. Different bodies need different progressions, and pretending otherwise is how fitness apps hurt people.
Built to be watched on a television
Over AirPlay, which changes layout decisions you would never make for a phone.
Where it ended up
No backend at all: everything runs on the device and syncs through the user's private iCloud. Nothing to operate, nothing to leak.
Built with: Swift · SwiftUI · CloudKit · StoreKit · AirPlay
Want something like this?
Two lines about the project is enough to start. A person reads it and a person answers.