GymLog
A phone form that appends training sets to a Google Sheet. Built because the sheet was already the system and the phone keyboard was the problem.
- Runs on
- a small VPS, behind Caddy
- Built with
- Flask · Sheets API · SQLite
- Screens
- 11
- Sets logged
- 128
- Type floor
- 17px · 56px taps
- Written
- Sep 2026, still changing
Training already lived in a spreadsheet. What it did not have was a way in: typing a set into a mobile sheet, one thumb, standing up, is a minute of work for five seconds of data. So the sheet stayed the database and the phone got a form in front of it.
Every rule in the design came out of the gym rather than the desk — dark ground under bad light, nothing tappable under 56 pixels, nothing to read under 17, and the numbers you are chasing set larger than the words that label them.
- Set the session up once — lift, programme, one-rep max, how many sets you are down for.
- Log a round: the main set and its superset, typed together, written as two rows.
- Tap any set to correct it. The sheet is written the moment you add it, so a fix is a fix in the sheet.
- Close the session. A nightly job pulls the rows into SQLite, where the figures on the home page come from.
