>_ DevTrendsen

Language

Home

Languages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Security
Python

How I Stopped Paying for Fitness Tracker Subscriptions and Deployed wger on My Own Server

wger logo

I have an old habit: as soon as I start going to the gym, my phone accumulates a dozen fitness apps. At first everything goes fine, but a week later you're greeted by a paywall. Want to create a complex program with weight progression? Pay monthly. Want to track calories without intrusive ads for questionable supplements? Pay again. Add to that closed proprietary formats that prevent proper data export, and the desire to keep logs quickly disappears.

Some time ago I stumbled upon an open-source project called wger (pronounced roughly as "vee-ger"). It's a full-featured self-hosted workout and nutrition manager written in Python and Django. The project has been on GitHub since 2013, has gathered over 6.6 thousand stars, and has evolved into a mature platform with mobile clients and an open REST API.

Get it on Google Play Download on the App Store Get it on F-Droid Get it on Flathub

What the system can do

In terms of functionality, wger covers practically all the needs of a person who regularly exercises and keeps track of their fitness.

Workout constructor and load progression

Here you can create programs of any complexity: from simple splits to periodization with precise weight progression rules. The exercise database comes out of the box, with pictures, technique descriptions, and breakdowns by muscle groups. If a specific machine is missing, you can easily add it yourself or submit it to the community.

Nutrition tracking and Open Food Facts integration

Instead of manually entering the nutritional info of every apple or chicken breast, wger pulls the product database from Open Food Facts. This is a huge open database of food products from around the world. You can build your own meal plans, track macronutrients (proteins, fats, carbohydrates) and daily calorie intake.

Measurements and progress gallery

Beyond basic body weight, the system stores the history of waist, bicep, body fat percentage, and any custom metrics. You can also upload progress photos by date. Since the server is under your control, personal photos won't leak to third-party clouds.

Mobile and desktop clients

Usually, open-source projects like this only have a web interface, which is inconvenient to open on your smartphone right at the squat rack. wger has an official Flutter app. It's built for Android (including Google Play and F-Droid), iOS, and Flathub for desktop Linux. The client connects directly to your instance via the API.

Under the hood

The project architecture looks classic for reliable web services:

  • Backend written in Django (Python).
  • Database: PostgreSQL or SQLite (for quick tests).
  • Frontend uses standard Django templates plus a REST API built on Django REST Framework.
  • Mobile apps written in Flutter, source code lives in separate repositories under the organization.
  • License: AGPL-3.0.

Having a full REST API means you can automate workout logging via webhooks, connect smart scales, or write your own Python script that compiles yearly statistics and sends a nice report to your messenger.

Quick start

Deploying your own instance is easiest via Docker Compose. The project team maintains a separate repository with all the ready-made configurations.

Step one. Clone the repository with the Docker files:

git clone https://github.com/wger-project/docker.git wger-docker
cd wger-docker

Step two. Start the container stack:

docker compose up -d

After startup, the web interface will be available on the local port (by default http://localhost:80). On first login, the system will prompt you to create an administrator account and load the basic sets of exercises and ingredients.

If setting up your own server feels like too much trouble, the authors have a public free server at wger.de. You can register there, test the interface, and only then decide if you need your own hosting.

Who this is for

The project is a great fit for anyone who:

  • Wants to store health and workout data on their own hardware.
  • Is tired of endless subscriptions in commercial apps like MyFitnessPal or Hevy.
  • Is looking for a ready-made backend for a fitness project or gym (wger has a basic multi-user mode with role-based access control for trainers and clients).

On the downside: the web interface looks a bit old-fashioned in places, and the mobile app sometimes lags behind paid alternatives in smoothness. But independence from third-party clouds and the open API more than make up for it. If you're looking for something for a home server or Raspberry Pi, wger definitely deserves a spot in your docker-compose.yml.

Related projects