Skip to content

FitTrack

Build FitTrack, a mobile-first workout tracker. One Python/FastAPI backend on Supabase (managed Postgres + Auth), a Flutter mobile app, and a Svelte web companion — two clients sharing one JWT-secured API.

Introduction

Why FitTrack, how the course is structured, and what you’ll have built by the end. Open →

Setup & Tooling

Install Python (uv), the Supabase CLI, Flutter, and Node, and lay out the project. Open →

Supabase Foundation

Provision Supabase, model the Postgres schema and migrations, and turn on Auth. Open →

FastAPI Foundation

Stand up the async FastAPI app, config, structure, and a connection to Supabase Postgres. Open →

Auth (Supabase JWT)

Verify the Supabase-issued JWT in FastAPI and build a get_current_user dependency. Open →

Domain Model

Model exercises, workouts, and sets with Pydantic, SQLAlchemy, and repositories. Open →

Exercises API

Build the exercise-catalog CRUD, shared and user-created. Open →

Workouts API

Log workout sessions and their sets, and read back history. Open →

Progress & Stats

Aggregate personal records, volume over time, and per-exercise trends. Open →

Flutter — Foundation

Set up the Flutter app with Riverpod, Supabase auth, and an API client. Open →

Flutter — Tracking

Build the mobile tracking UI: start a workout, log sets, view history. Open →

Svelte Web Companion

Ship a SvelteKit dashboard that reads the same API. Open →

Testing

Cover the backend with pytest and the Flutter app with widget tests. Open →

Deployment

Containerize the API, run on hosted Supabase, and ship both clients. Open →

Wrap-up

Review what you built, the trade-offs, and where to take FitTrack next. Open →