01 / Origin
Cadent started with activity tracking.
The first version covered the basic run and ride loop: record GPS, save the route and workout metrics, and come back to the activity later. The project grew from there into file imports, a web client, training calendars, and reusable plans.
I acted as engineering lead on the six-person team. I set the overall architecture across the API and clients, while working primarily on the backend, activity-data pipeline, and infrastructure.
02 / Product
Recording and planning workouts.
On mobile, Cadent records GPS at 1 Hz and handles the run or ride from start through save. FIT and GPX imports cover workouts recorded on watches and other devices.
The web client focuses more on planning. Completed activities sit alongside upcoming workouts on the calendar, and reusable training plans can be previewed before they are added.

03 / System
A workout can contain thousands of samples.
Cadent keeps the activity itself separate from the time-series data behind it. Distance, speed, elevation, and time are stored as streams, while the activity record carries the route, summary metrics, and other information needed throughout the product.
I built DIBS, a compact binary format for those streams. It stores values at the precision Cadent needs, then compresses the small changes between neighboring samples. The API can also return full, medium, or low-detail streams, so every view does not have to load the complete recording.

04 / Detail
Plans stay separate from completed workouts.
A planned workout can carry a target distance, duration, elevation, speed, or power. A completed activity keeps what was recorded instead.
Cadent stores the two separately, so finishing a workout does not overwrite the original plan. That preserves both sides of the training record and makes planned-versus-actual comparison possible.

05 / Source
Cadent is open source.
The repository contains the Go API, Flutter app, React web client, PostgreSQL migrations, end-to-end API tests, and the local development setup. The activity pipeline, training model, and DIBS implementation are all available with the rest of the project.
