2025Live & in use
Gym Progression
A lifting log for people running an actual strength programme — it computes today's weights from the programme's own rules, and shows the arithmetic.
- Role
- Sole developer — Flutter app, local persistence, release pipeline
- Stack
- Flutter
- Dart
- sembast
- Firebase

Status
Live on the iOS App Store since 2 September 2026. Android builds go to testers only, through Firebase App Distribution.
Decisions
Epley over Brzycki
One-rep max estimates use the Epley formula rather than Brzycki, to match the 5/3/1 spreadsheets lifters migrate from.
Programme state is a pure fold over history
Programme state is recomputed on read as a pure fold over session history. Fixing a typo in an old session automatically rewinds every stall and deload decision that followed it.
Local-first, no sign-up
Data lives locally in sembast, and the free tier has no sign-up gate.
What it cost
- Epley: knowingly less accurate at some rep ranges, chosen for trust.
- Pure fold: compute on every read, and history can never be truncated.
- Local-first: no cross-device sync without an account.
Screenshots


