Strengthly
Training analytics for people who log their lifting in the Strong app.
- Problem
- Workout apps record every set but say very little about what years of logs add up to. Lifters stall without knowing whether it's their volume, their intensity, how often they train, or the running they do alongside.
- What I built
- A free web app. Upload a Strong export (and optionally Strava) and it shows:
- which muscle groups are actually getting stronger;
- where the weak links and stalled lifts are;
- a periodised training block built from the lifter's own maxes.
- Result
- Launched publicly on LinkedIn with 100+ visitors in the first weeks. Around 9,300 lines of Python, with a test suite and an in-app Methods paper that documents every formula.
Demo data All screenshots show the app's built-in sample lifter, a made-up three-year training history.
Messy input, one clean schema
Reads three different Strong export formats, removes warm-up sets, and separates loaded, bodyweight and assisted sets. Each format has its own test.
Honest strength estimates
Estimated maxes come from the fewest-rep evidence available, so high-rep sets don't inflate them. Growth compares equal numbers of sessions at each end to remove a best-of-N bias.
Statistics that can say "no effect"
The running test removes each lift's long-term trend, then uses a permutation test. A chart only claims an effect when the gap is bigger than chance produces.
Built to run cheaply
Fits a free 1 GB server by sharing one copy of the demo data. Partial page reloads keep scroll position steady, and cookie-free analytics run on a background thread.