// the find
wger-project/wger
Self hosted FLOSS fitness/workout, nutrition and weight tracker
wger is a self-hosted workout and nutrition tracker built on Django, with companion Flutter apps on Android, iOS, F-Droid, and Flathub. It covers the full fitness-tracking stack: workout routines with progressive overload rules, calorie logging against Open Food Facts, body measurements, and basic gym management for multi-user installs. The target is anyone who wants Myfitnesspal/Strong-style tracking without handing their data to a VC-backed company.
The automatic weight progression rules in routines are the real differentiator — most self-hosted trackers make you do that math yourself. The REST API is well-documented and supports PowerSync for offline-first sync to the mobile apps, which is architecturally more honest than most hobby projects that bolt on a mobile UI as an afterthought. The CI pipeline is solid: tests, linting, CodeQL, and Docker image builds all run on PRs, and coverage is tracked via Coveralls. Weblate integration for community translations covers 30+ locales, which matters for a fitness app where units and terminology vary by region.
The web UI is visibly dated — it mixes Bootstrap with jQuery Mobile-era icon PNGs and an ajax-loader.gif, which signals the frontend hasn't had a meaningful pass in years. The Docker setup for production uses Celery, which adds real operational complexity (you're now running a message broker) for what is essentially periodic background jobs that a cron + management command would handle fine at self-hosted scale. The Open Food Facts integration requires running your own import pipeline with a separate docker-compose stack, and the nutrition database quality is hit-or-miss depending on what's been contributed for your region. There's no built-in data export to open formats (CSV, JSON) from the UI — you can get it via API, but that's a friction point for users who just want to take their data somewhere else.