Selected work / Open source

Cadent

Open-source software for recording workouts and planning endurance training.

Cadent runs across mobile and web, with GPS recording, FIT and GPX imports, activity analysis, calendars, and reusable training plans.

Role
Engineering lead
Team
Six
Platforms
Mobile / Web
Source
Open source

2025–26

Cadent training calendar on a laptop alongside a completed running activity on a phone.
FIG. 00Training calendar and completed activity

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.

Three Cadent mobile screens showing a run being recorded, saved, and reviewed.
FIG. 01Mobile recording and activity review

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.

Cadent web activity view with a route map, summary metrics, charts, and splits.
FIG. 02Activity route, metrics, streams, and splits

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.

Cadent web calendar showing a planned workout beside its completed activity and recorded data.
FIG. 03Planned workout and completed activity

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.