Kristopher Baker iOS roots · Product systems · AI-assisted workflows
← The workshop
active updated 1w ago

Domestique

A native macOS app for the cycling data I actually care about, with nothing I don't. Pulls rides from Garmin and Strava, computes the metrics that matter, builds adaptive plans, and drives a smart trainer through the workouts. No social feed, no premium tier, no third-party cloud.

SwiftmacOSSwiftUICyclingBLEGo

Domestique pulls my rides from Garmin Connect and Strava, computes the metrics that decide whether a training block is working (normalized power, IF, TSS, a mean-max power curve, Bannister CTL/ATL/TSB), turns that into an adaptive plan, and drives my smart trainer through the workouts. No social feed, no premium tier, no third-party cloud holding my history.

The name is the idea. A domestique is the rider who does the unglamorous work so the leader can win. That is the job I wanted from my own data.

I have been on a bike most of my life, mountain biking in Idaho and now road riding here in Japan, and I have used most of the big platforms. They are good at the feed and the badges. They are less good at being a quiet, honest tool that lives on my own machine and answers to me. So I built one. It is single-user by design, though the Go backend underneath is multi-athlete-ready for the day that changes.

Dashboard: a 28-day form readout with the Performance Manager chart and weekly intensity-stacked load bars. The dashboard. CTL, ATL, and TSB in one read, with weekly load colored by intensity.

Activity detail for a Fujisawa road ride: hero readouts, a route map, a power and heart-rate chart, a mean-max power curve, elevation, and a time-in-zone row. An activity, broken down: route, power and heart rate, the mean-max curve, and time in zone.

Today view: an adaptive Sweet Spot 3x10 recommendation with start and free-ride controls, above a goal-setup card. Today's prescription. The engine picks the session; one tap starts it on the trainer.

The workout game mid-ride: a 2D side-scrolling cyclist climbing a hill at dusk, with a live power and target HUD across the top. The same interval, rendered as a side-scroller. My power drives the rider up the hill.

Routes library listing saved rides including Shimanami Kaido and three Mont Ventoux ascents, with distance and elevation per route. The Routes library. Imported GPX, saved rides, and the Mont Ventoux presets.

Route detail for the Shimanami Kaido from Onomichi to Imabari: an elevation profile above a satellite map of the traced course. A route, ready to play back. The elevation profile drives the trainer's gradient.

The updates below are the build log: the foundation wired end to end, a workout game I did not plan to write, a backend of its own, and the day Mont Ventoux showed up on the trainer.

Updates 5

Next

Shikisha See the build log