FitTrack
An app that logs my workouts and meals, and suggests what to train next based on how well I have recovered.
The problem
I train in the gym and climb. As a new parent, my training time is short and unpredictable. Generic fitness apps either ignore recovery or hide their logic behind a subscription and a black box.
I wanted one place that answers two questions every morning: how recovered am I? and given the time I have, what should I train? The answer should be explained, so I can decide whether to follow it.
What it does
Workout logging and plans
Log sets, reps and weights against reusable plans. The next session pre-fills from last time, so progression is visible.
Nutrition tracking
Calories and macros against a daily target, with food search through the open Open Food Facts database.
Daily readiness score
Sleep, heart-rate variability, resting heart rate and training load from a Samsung Health export, each compared with my own recent baseline and combined into one score from 0 to 100.
Smart Coach (rule-based)
Suggests the muscle group trained longest ago, drops grip-heavy exercises within 24 hours of a climbing session, and trims accessories when time is short.
Progress charts
Strength, body and activity trends over time.
Try it
Runs entirely in your browser with made-up data. Nothing is sent anywhere.
Readiness and next workout
Move the sliders to set up a made-up morning. The score and the suggestion use the same weights and rules as FitTrack's coach.
This morning
Readiness
Good to push. Training load is the strongest signal (load 1.1x baseline, in the productive range).
Suggested session
Pull Day — Back Focus about 45 min
- Barbell Row: 4 × 6-8 · rest 120s
- Pull-Up: 3 × 6-10 · rest 90s
- Seated Cable Row: 3 × 8-10 · rest 90s
- Face Pull: 3 × 12-15 · rest 60s
- Barbell Curl: 3 × 8-10 · rest 60s
- Hammer Curl: 3 × 10-12 · rest 60s
Why: Back is the group trained longest ago.
Screens
All screenshots use made-up demo data.






Architecture
In words
The app is a web app I install on my phone. It talks to a small API on my home server, reached privately over Tailscale.
All data sits in one SQLite database. A Samsung Health export is imported on demand. Re-running the import updates records instead of duplicating them.
The readiness score and the coach are plain functions over that database. The only outside call is the food search.
How I built it
I wrote the requirements from my own routine: limited, unpredictable training time as a new parent, and climbing alongside the gym.
I designed the product and architecture, including how the readiness score should behave. The code was written with Claude Code. I reviewed it, and the readiness scale was calibrated against a year of my own history.
A trade-off I made deliberately. The first design called a paid AI model for coaching. I replaced it with rules: they cost nothing to run, work offline, and every suggestion comes with its reason.
Tech stack
- Frontend
- Backend
- Data
- Hosting