Adam El Kadaoui
Selected work

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.

  1. 01 · Ingest

    Garmin activities and FIT files in, normalised and stored.

    Distance, pace, heart rate, elevation.

  2. 02 · Model

    Form, fitness and fatigue from training load.

    Rolling loads, weekly targets, thresholds.

  3. 03 · Advise

    One clear call for today's session.

    Green light, steady, or hold back.

The interface

RunOmics public demo dashboard showing deterministic synthetic training data
Today

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