๐Ÿ’ช FitnessTracker โ€” Your Complete Fitness Companion

A privacy-first Progressive Web App for tracking workouts, runs, body metrics, and daily wellness โ€” all stored on your own server. No accounts, no cloud, no third-party data sharing.

Install it on any device. It works offline, syncs when you're back, and looks great in light or dark mode.
FitnessTracker icon
Platforms: iOS ยท Android ยท Desktop (PWA, installable everywhere)

Who it's for

FitnessTracker is for anyone who wants to take their fitness seriously without handing their data to a third-party service. No subscription fees, no ads, no accounts โ€” just you, your browser, and a lightweight server you control.

  • Home gym users โ€” track bodyweight, dumbbell, and flexibility workouts with 76 pre-loaded exercises
  • Runners & walkers โ€” log GPS-tracked runs/walks with pace, duration, and distance stats
  • Weight watchers โ€” chart your weight journey with goal tracking and BMI calculation
  • Wellness-minded people โ€” daily mood, energy, sleep, and stress check-ins with 8-week trends
  • Privacy-conscious fitness enthusiasts โ€” everything stays on your server; export/backup anytime

What it can do

๐Ÿ‹๏ธ Workouts

76 exercises across cardio, calisthenics, dumbbell, and flexibility. Circuit templates with configurable rounds, per-exercise durations, warmup/cooldown phases, and a full-screen workout runner with audio cues and text-to-speech.

๐Ÿƒ Run & Walk Tracking

Log GPS-tracked runs and walks with distance, duration, pace, and notes. Stats dashboard shows total distance, best pace, and average pace over time.

๐Ÿ“Š History & Stats

Session history with date range filters, weekday bar chart, and a GitHub-style contribution heatmap. JSON import/export of all your sessions. Streak tracking with total sessions, hours, and calories burned.

โš–๏ธ Health & Wellness

Weight tracking with goal progress bars and BMI calculator. Body measurements (waist, hips, chest, arms, thighs, neck) with before/after deltas. Daily wellness check-ins โ€” mood, energy, stress, sleep hours โ€” with 8-week trend charts. Health score (0โ€“100) combining BMI, workout consistency, streak, and measurements.

๐ŸŽ Apple Health Import

Import your Apple Health export ZIP โ€” workouts and health metrics are automatically parsed and added to your history. No manual data entry needed if you're coming from an Apple Watch.

๐Ÿ“ฑ PWA & Offline

Installable on iOS, Android, and desktop. Works offline with service worker precaching. Push notification support via Web Push API. Light/dark theme, audio mute, and selectable date format (D/M or M/D).

Screenshots

Workout runner with exercise image, progress ring, and timer:

FitnessTracker workout runner

Stats dashboard with heatmap and charts:

FitnessTracker stats

Health dashboard with weight graph and wellness trends:

FitnessTracker health

Tech Stack

TypeScript React 19 + TypeScript โ€” Modern component-based UI with full type safety
Vite Vite โ€” Lightning-fast build tool with HMR for development
Tailwind CSS Tailwind CSS v4 โ€” Utility-first styling with CSS variable-driven theme system
Python FastAPI + Python โ€” High-performance async REST API with auto-generated OpenAPI docs
SQLite SQLAlchemy + SQLite โ€” ORM with Alembic migrations for safe schema evolution
Docker Docker Compose โ€” One-command deploy with Nginx reverse proxy, multi-arch builds
Node.js Playwright + Vitest โ€” End-to-end browser tests + unit tests, ~260 tests total

CI/CD

Every push to main triggers a full pipeline: lint โ†’ unit tests (backend + frontend) โ†’ E2E (Playwright) โ†’ Docker multi-arch build & push to GHCR โ†’ auto-deploy to the VPS via SSH.

Why I built it

I wanted a fitness tracker that didn't require an account, didn't sell my data, and worked on every device I own. Most fitness apps lock your data behind a subscription or push you into a specific ecosystem. FitnessTracker is the opposite: self-hosted, privacy-first, and fully open source. Your data lives in a SQLite file you can back up, export, or inspect anytime.

Source Code

The project is open source and available on GitHub