Skip to main content

Personal fitness coach

Self-hosted application.

I am building a deeply personal predictive coach that helps me break out of negative stress → fitness → nutrition → weight cycles quicker by providing the right guidance at the right time.

Application consolidation (replacing multiple paid apps) is a secondary benefit.

tip

Stage 1 Phase 1 (Foundation) is complete Production-ready base with real-time Strava sync, trustworthy splits, route thumbnails, and instant webhooks.

Follow my build progress in this section. Each completed phase is documented, with code and logs in this repo.


Status

Completed tasks

Stage 1 - Phase 1 (Foundation) — Production-ready base for personal coach:

  • Real-time sync — New activities appear in ~30 seconds via Strava webhooks.
  • Accurate splits — Shows real distances like "0.08 km" and durations like "0:38" (no fake 1km assumptions).
  • Route thumbnails — Auto-generated OpenStreetMap previews for every activity.
  • Comprehensive admin — Monitor webhooks, job queues, and performance via API.
  • Database-first — Enterprise-grade audit trails for tokens and webhooks.
  • Performance optimised — 95% fewer HTTP requests, lazy-loaded images, sub-50ms API responses.
  • Export ready — CSV export of all your data.
  • Code quality — Enterprise-grade development tooling with Prettier, ESLint, Husky, automated Git hooks, comprehensive Jest testing framework, and fully automated GitLab CI/CD pipeline.
  • See costs & time for ongoing tracking.

Next task

Complete migration from mac development environment to production on-premises Kubernetes cluster to ensure the app is always running.

In progress tasks

Outstanding phases in stage 1:

  • Phase 2: Advanced Analytics (auto best efforts 400m-50km, ranking system, time filters).
  • Phase 3: Statistics Dashboard (landscape bar graphs, dynamic scaling, timeframe buttons).
  • Phase 4: Activity Management (edit/delete with audit, Strava difference detection).
  • Phase 5: UI Refinements & Components (filtered counts, clear/refresh filters, shadcn/ui Calendar/Popover, consistent buttons with icons, visual feedback).
  • Phase 6: Multi-User Auth & Permissions (unified User model with multi-tenancy, UnifiedAuthAdapter, roles/permissions, session management, user/session CRUD).
  • Phase 7: Data Import & Migration (batch client/session data import tools from TrainingPeaks with templates & validation).
  • Phase 8: Monitoring & Alerting (background health monitoring, admin views, alerting & notifications).
  • Phase 9: Advanced Testing & Quality (integration tests for components, visual regression tests, cross-browser compatibility, E2E testing).
  • Phase 10: Infra & GitOps (k8s manifests, FluxCD, secrets, backups).
  • Phase 11: Security & Reliability (auth layer, error taxonomy, structured logs).

Future stages (planned)

  • Stage 2: iOS app with Apple HealthKit (import 10+ years historical data for cycle prediction).
  • Stage 3: Personal Analytics & Prediction (early warning system for negative cycles).
  • Stage 4: Holistic Health Integration (weight, nutrition, sleep, HRV, stress correlation).
  • Stage 5: Apple Watch Personal Coach (proactive suggestions, personal voice coaching).