Coach Adaptatif

Sport science without the complexity — running in production at coach.jjoly.eu

GoMariaDBPWA GDPRTOTP 2FAAES-GCM

The problem

Most strength-training apps hand you a rigid programme and a set counter. The models sport scientists have been using for fifty years — fitness-fatigue, Bayesian 1RM estimation, volume landmarks — are available nowhere to an ordinary lifter.

The solution

A self-hosted coach that runs those models in the background and adapts each session (load, volume, rest, exercise selection) to what the body actually went through:

Technical choices

Coach Adaptatif architecture A PWA talks to a single Go binary running in a read-only container. Its dedicated MariaDB is reachable only by it (NetworkPolicy) and backed up daily by a CronJob. Strava is linked through OAuth and webhooks. HTTPS only client dump PWA mobile first installable coach-app · Go Banister · Kalman 2D mandatory TOTP read-only container 0 capability MariaDB dedicated NetworkPolicy CronJob daily backup checksums Strava OAuth · webhooks
The database accepts exactly one client: the application. Everything else in the cluster is denied by default.

In production

deployment   k3s + Flux CD (GitOps) — see the infrastructure case study
pipeline     push to main → tests → build → Trivy scan → GHCR → staging
             tag vX.Y.Z → production (rollback = git revert)
monitoring   native k8s probes, daily encrypted backups

The version actually running is shown, and dated, on the home page.