The Problem
The spreadsheet was clunky to fill in and hard to get anything out of.
I was tracking my lifts in a spreadsheet, typing in the plates I put on the bar for every set. It worked well enough as a record, but it was clunky, and the way I had it set up made it hard to plot anything. I could graph total weight over time and that was about it.
I wanted something quick and easy to log during a workout, and I wanted it to show me my progress properly. An app was the way to get both.

The First Version
Light, four tabs, and doing more than it needed to.
The version I had running by the middle of April was a white app with a blue accent. It had four tabs. The Progress tab showed one lift at a time: pick a movement, see its personal record and a line chart of weight over time. There was also a Strava screen, a real connection you could authorize, for pulling in rides and walks.
Logging a set worked the way it still does. Tap the plates you put on the bar and the app adds up the total, so the thing I actually wanted from it was there in the first build.
Three weeks later I took most of it back out in one go, along with the light theme. Strava was too much scope and it was unnecessary. The Progress tab was not well thought out enough to keep. All I needed at that point was to see what my last lift was at so I could add the right amount on top of it, and I did not need anything else yet.




April 2026, before the cut. Four tabs, a blue accent on white, and a Progress tab built around one lift at a time.
Why It Stalled
It kept losing the workouts I logged.
I would log a workout and it would show up on my calendar. Then I would close the app, open it again, and it would be gone. The cause was in how the app loaded its starting data. I had my old lifting history built in as seed data, and the loading logic was wiping what was already there in order to put it back.



The same app by late May, after the refresh. Dark, down to three tabs, and nothing beyond the calendar for looking back.
I stopped using it in May, and my progress in the gym stalled along with it.
This was my first app, and I had been set on it being something I downloaded onto my phone. Envelope Budget is what changed that. Once I had built and shipped a web app on Vercel, I knew I could do the same here, and that updating it would mean pushing a change instead of rebuilding and reinstalling.
The Rebuild
Fixed the bug, moved it to the web, and kept going.
On August 11 I ported the app from a native build with on-device storage to a Vercel-hosted web app that keeps everything in the browser. No accounts, nothing syncing. Then I spent two weeks building the parts the first version never had.
Built with Claude Code
I built this the same way I built Envelope Budget, entirely with Claude Code. This one came first, which is why I spent so long assuming it had to be a native app.
- Aug 12: Freestyle workouts, exercise substitution, muscle tags, and a Progress tab. A workout no longer had to follow its template. I could swap an exercise out mid-session, skip one, or start from nothing and build the workout as I went. Exercises got tagged by the muscles they train, bodyweight lifts became their own kind of lift, and the Progress tab came back, this time covering every lift at once instead of one at a time. This is also when I took the seeded history out. I did not need it once I could import a JSON backup instead, and my fiancée needed the app to start clean rather than with my lifts already in it.
- Aug 17: A weekly target, and plain English on every chart. I set a number of sessions a week to aim for, and the app started counting streaks against it. I also went back through the Progress tab and reordered it around my actual program. I had put the first version together without evaluating whether it was useful, so I reassessed it and moved things to where they actually helped. Every card got a short explanation of what it was showing.
- Aug 18: A pre-tagged exercise catalog, and a post-workout summary. 145 exercises tagged by hand with the muscles they train, so adding a lift means picking from a list instead of typing a name and tagging it myself. After finishing a workout the app now shows a recap: total sets, reps and volume, the top set for each exercise, and any records hit that day.
- Aug 20 to 24: Plate picker changes, and machine lifts. Adjustments to how plates get added and removed, and a third kind of lift alongside barbell and bodyweight, for machines where you set a pin instead of loading plates.


The Progress tab five days apart. The first version opened on weekly volume with the stat tiles loose above it, and every card was captioned in language that assumed you already lift. The second groups the tiles into a card, moves consistency up, and gives each card an explanation you can tap open.
Posting workouts to Strava is the one thing I built and then took back out. I did not want this to turn into a general workout app. Strava does what Strava does really well, and I wanted to keep this specifically for weights.
No prescriptions
I did not want the Progress tab telling anyone what to do. I wanted it to show the data, explain what that data is telling you, and let you decide for yourself. My fiancée is just getting into lifting, so the charts had to be readable by someone who is new to it.
Screens
The app, in use.




The core loop: pick a day, log a set by tapping the plates you loaded, and see the workout summed up when you finish.




What the spreadsheet could not do: per-lift trends, weekly set counts by muscle, and every past session on a calendar.
Real Outcome
I train three times a week now.
I can track every lift, every session, exactly. I can swap an exercise out on the fly or add a new one without adding a column to a spreadsheet. I can look at how a lift is trending over months instead of plotting one line of total weight.
It is also fun to use, and that has kept me training. I get to the gym three times a week now without a problem, and every lift has been going up consistently, by 2.5 to 5 lbs a session.
Seeing it laid out also shows me which lifts are lagging so I can push those. I realized my deadlift and my squat were a long way behind where they should have been, and I have added substantial weight to both to bring them up.
What I'd Do Differently
Build it for the web first.
I was stuck on the idea that this had to be an app I downloaded onto my phone. It was my first app, and that was what building an app meant to me at the time. Holding onto that is what stalled the project, and my progress in the gym with it. If I were starting again I would build the web version from the beginning.