Overview
Discover what makes Wingfit powerful
Wingfit is a self‑hosted, privacy‑first fitness platform that lets developers build workout plans, track personal records, and ingest smartwatch telemetry. At its core, the application is a single‑page Angular client that communicates with a lightweight FastAPI backend. The API surface exposes CRUD endpoints for workouts, programs, and user metrics, while optional OIDC authentication can be configured via the `config.md` documentation. The entire stack is containerized with Docker Compose, making it trivial to deploy on any Linux host or cloud provider that supports Docker.
Workout Planning
Personal Records (PR) Tracking
Smartwatch Integration
Reporting & Analytics
Overview
Wingfit is a self‑hosted, privacy‑first fitness platform that lets developers build workout plans, track personal records, and ingest smartwatch telemetry. At its core, the application is a single‑page Angular client that communicates with a lightweight FastAPI backend. The API surface exposes CRUD endpoints for workouts, programs, and user metrics, while optional OIDC authentication can be configured via the config.md documentation. The entire stack is containerized with Docker Compose, making it trivial to deploy on any Linux host or cloud provider that supports Docker.
Architecture
| Layer | Technology | Rationale |
|---|---|---|
| Frontend | Angular 19 + PrimeNG 19 + Tailwind CSS 4 | Modern component‑driven UI with minimal bundle size; PrimeNG supplies ready‑made widgets for forms and tables, while Tailwind keeps styling consistent and configurable. |
| API | FastAPI + SQLModel (SQLAlchemy ORM) | FastAPI offers async request handling, automatic OpenAPI generation, and dependency injection. SQLModel provides a type‑safe ORM layer on top of SQLite. |
| Database | SQLite (file‑based) | Lightweight, zero‑configuration persistence suitable for small to medium deployments; the schema is defined in SQLModel and migrations are handled via Alembic. |
| Containerization | Docker Compose (recommended) | A single docker-compose.yml exposes port 8000 and mounts a persistent volume for the SQLite database. The image is hosted on GitHub Container Registry (ghcr.io). |
The application follows a client‑server pattern: the Angular SPA consumes the RESTful API, which in turn talks to SQLite. All communication is over HTTPS when deployed behind a reverse proxy, and the backend can be extended with WebSocket endpoints for real‑time workout telemetry if needed.
Core Capabilities
- Workout Planning – Create, edit, and delete exercises with sets, reps, weight, and rest intervals. Plans can be grouped into programs and scheduled.
- Personal Records (PR) Tracking – Persist max lifts per exercise; the UI visualizes PR progression over time.
- Smartwatch Integration – A JSON‑based ingestion endpoint accepts telemetry from devices such as Apple Watch or Garmin; the API normalizes timestamps and maps metrics to existing workout sessions.
- Reporting & Analytics – Endpoints return aggregated statistics (volume, intensity, progression curves) which the frontend renders with PrimeNG charts.
- Extensibility – The API follows REST conventions, making it straightforward to build third‑party dashboards or mobile clients. Webhooks can be added by forking the repository and exposing a
/webhookroute.
Deployment & Infrastructure
Wingfit is designed for zero‑friction self‑hosting:
- Docker Compose – One command (
docker-compose up -d) starts the entire stack. The compose file mounts astoragedirectory for persistence and exposes port 8000. - Docker Run – For minimal setups, a single
docker runcommand is sufficient; the image pulls automatically from GHCR. - Scalability – While SQLite limits concurrent writes, the stateless FastAPI layer can be horizontally scaled behind a load balancer if traffic grows. For larger deployments, swapping SQLite for PostgreSQL is trivial by changing the SQLModel connection string.
- Infrastructure – The application runs on any platform that supports Docker: Raspberry Pi, Home Assistant add‑ons, cloud VMs, or Kubernetes (via Helm chart).
Integration & Extensibility
- Plugin System – Currently, Wingfit exposes a simple plugin hook: developers can add new endpoints or modify the ORM models by forking and extending
app/main.py. Future releases may introduce a formal plugin API. - APIs & Webhooks – The OpenAPI spec is auto‑generated; clients can consume it with Swagger UI or any HTTP client. A
/webhookendpoint can be configured to push data to external services (e.g., Slack, Grafana). - Customization – Tailwind’s configuration file allows theme overrides; PrimeNG themes can be swapped without touching the Angular code. The frontend is fully component‑based, so developers can replace or extend widgets.
Developer Experience
- Documentation – The repo contains a concise
docs/config.mdfor authentication and environment variables, and the README covers installation. The OpenAPI docs are available at/docsonce the backend is running. - Community & Support – Issues and pull requests are welcomed; contributors can easily add features. The CC BY‑NC‑SA 4.0 license ensures freedom to modify, but commercial use is disallowed.
- Testing – While not detailed in the README, FastAPI’s dependency injection makes unit testing straightforward. Angular components can be tested with Karma/Jasmine.
Use Cases
- Personal Home Gym – A developer sets up Wingfit on a Raspberry Pi, uses the smartwatch ingestion endpoint to log workouts from an Apple Watch, and visualizes progress on a local display.
- Small Coaching Business – Coaches host Wingfit in the cloud, expose a custom domain, and provide clients with a single‑page app to plan sessions while keeping data private.
- Research Projects – Data scientists can pull workout metrics via the API, merge them with physiological data from wearables, and run statistical analyses locally.
Advantages
- Privacy‑First – No telemetry; all data stays on the host.
- Performance & Simplicity – FastAPI’s async engine and SQLite’s low overhead deliver quick responses for typical fitness workloads.
- **Lic
Open SourceReady to get started?
Join the community and start self-hosting Wingfit today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Swing Music
Self‑hosted music streaming with a slick browser UI
OpenSMTPD
Self-hosted apis-services
OTOBO
Flexible open‑source ticketing and ITSM for service organizations
Huly
All-in-one platform for team planning, chat, and virtual office
Restreamer
Free, self‑hosted live stream distribution platform
Tiny File Manager
Lightweight web file manager in a single PHP file
