MGKFITNESS
Get the apps

Run

Coming soon toApp StoreGet it on Google Play

Lift

Download on the App StoreGet it on Google Play
Open source

Built in the open.

Run and Lift are open source, under the AGPL. The code that records your training and talks to the coach is there to be read, questioned and improved.

Stars
1
Forks
0
Open issues
3
Last change
16 October 2026
What is in it

All of it, in one repository. Both apps, what they share, and the backend.

apps/mgk_run
Run, the running tracker and training coach.
apps/mgk_lift
Lift, the strength log.
packages/mgk_ui
The design system both apps are built from.
packages/mgk_auth
The one account, shared by both.
packages/mgk_units
Distances stored in metric and shown in km or miles.
supabase/
The database, as migrations, with its tests; and the server functions: the coach, account deletion, subscriptions and the daily summary.
scripts/store
The tools that send each release to the stores.
web/
This website. It is not under the AGPL.
How it is built

The same code as the stores. Every build sent to a store is tagged with its commit.

A build is tagged on the commit it came from, as run/build-29 or lift/build-45, so you can read exactly what you are running. Work happens on develop; main holds what went to review. This website is Next.js, on Vercel.

The licence

Read it, run it, change it, share it. And share your changes too.

Contributing

An idea, a bug, a fix, a feature. Every change is read before it is merged.

  1. Open an issue for a bug or an idea. For anything large, open one before you start, so the work isn’t wasted.
  2. Fork the repository and branch from develop.
  3. Make the change, with its tests.
  4. Sign off each commit (git commit -s): a Developer Certificate of Origin, no contributor agreement.
  5. Open a pull request into develop. It is read, then checked, then merged.

The rules that don’t bend

Run it yourself

The apps and the whole backend, on your own machine. With Flutter, Docker and the Supabase CLI.

git clone https://github.com/MGKCodes/mgk-fitness.git
cd mgk-fitness
flutter pub get
supabase start
supabase db reset

cd apps/mgk_run
dart run build_runner build --delete-conflicting-outputs
flutter run --dart-define-from-file=config/app_config.json

Before the last line, copy config/app_config.example.json beside it and fill in your own Supabase project’s address and key; a local one from supabase start works. The README has every step, and the tests.