Most fitness apps lock your history behind cloud accounts or subscriptions; this project reverses that trade-off by shipping a modern, sync-capable tracker that keeps every user's data in a folder they control. You get guided sessions, progression rules and visual stats that behave like a hosted service, but everything runs on your hardware and is exportable as plain JSON.
What Sets It Apart
- Local-first design: the entire profile and workout history are single JSON documents under ./data, so backups are simple and passkey private keys never leave user devices — which means auditability and easy self-hosting instead of opaque cloud storage.
- Practical modern UX without lock-in: installable as a PWA or standalone Android APK, passkey-based multi-device sync, REST-like API and animated exercise demos — so you get a phone-native training flow while retaining full control over data and deployment.
- Optional AI integrations (opt-in): an AI coach that drafts or reviews routines and a read-only MCP bridge for local assistants. These are disabled by default and use provider keys you supply, so any LLM work happens under your key and consent.
Who It's For & Tradeoffs
Great fit if you want full control over fitness data, prefer self-hosting (Docker or single-file Android installs), or need detailed progression and import from other trackers. Expect more setup effort than an app store subscription: you manage backups, hosting, and (if you enable it) provider keys for optional AI features. The project is AGPL-3.0, so running modified networked instances requires you to share source.
How It Works (short)
Core logic lives in pure functions used by the frontend (progression, 1RM, stats). The stack is a static React frontend served by nginx, a minimal Node API storing JSON files, and optional auxiliary components (AI coach image/endpoint support and an MCP server) that run only if configured.