
Personal training appSole authorDrawing 26 of 37
Gym
Plan
I lift on a fixed weekly split, so I built a small gated app to hold the plan. It covers a week of days and forty-eight exercises, and checking off a set takes one tap.
- StatusPrivate, in active use
- StackVanilla JS, no framework or build step
- SyncLocalStorage first, then a small server endpoint
- VisibilityNot public, gated behind login
Sheet 02 of 04/Why
The plan in one place
The app opens straight to today, with one row per exercise and a checkbox on each, so I don't have to find anything before I log a set.

Sheet 03 of 04/Swaps
Swapping an exercise
Every exercise has a one-tap substitute for when the equipment's taken. The swap still counts as the planned exercise, so swapping never breaks the streak.
Sheet 04 of 04/Sync
How two phones share one log
It saves to the phone first, so it still works with no signal, and then syncs to a server in the background. The sync merges the two copies instead of picking a winner, so two phones logging the same day can't erase each other's ticks.