Personal product · Open source
Run
Omics
Running analytics, built end-to-end.
- Role
- End-to-end product & engineering
- Architecture
- Domain · Application · Infrastructure
- Public demo
- Deterministic synthetic data
What it does.
01 · Ingest
Garmin activities and FIT files in, normalised and stored.
Distance, pace, heart rate, elevation.
02 · Model
Form, fitness and fatigue from training load.
Rolling loads, weekly targets, thresholds.
03 · Advise
One clear call for today's session.
Green light, steady, or hold back.
The interface

Real product interface · Deterministic synthetic data
Real data stays private.
The product doesn't.
My Garmin data lives in a separate private repository and is fetched before each build into a data/ directory outside public/ — only server-side code reads it, and nothing in it is served as a static asset. A clone with no private source configured generates a deterministic fictional season instead, so the same code renders the same screens with no personal activity data in the public repository.
- Private source configured
- Real season, read server-side
- Fresh clone
- Deterministic fictional season
- Pipeline
- Python · Garmin / FIT
- Frontend
- Next.js · TypeScript
- Data boundary
- Private data stays server-side
- Delivery
- GitHub Actions · Vercel


