Prerequisites
Before you begin, ensure you have the following installed:Docker & Docker Compose
Required for running all services in containers
Git
For cloning the repository
For local development without Docker, you’ll also need Python 3.13+, Node.js 22+, PostgreSQL 18, and Redis 8.
Quick Start with Docker
Get up and running in 3 simple steps:Configure Environment
Copy the example environment files to create your local configuration:
The default configuration works out of the box for local development. You can customize settings later for provider integrations.
Start the Platform
Launch all services with a single command:This starts 6 services:
- PostgreSQL (port 5432) - Database
- Redis (port 6379) - Cache and message broker
- FastAPI Backend (port 8000) - REST API
- Celery Worker - Background task processor
- Celery Beat - Task scheduler
- React Frontend (port 3000) - Developer portal
- Flower (port 5555) - Celery monitoring dashboard
First launch takes 2-3 minutes to build Docker images. Subsequent starts are faster.
Access the Platform
Once all services are running, you can access:Developer Portal
Web dashboard for managing users and API keysDefault credentials:
- Email:
[email protected] - Password:
your-secure-password
API Documentation
Interactive Swagger UI for exploring and testing API endpoints
Celery Dashboard
Monitor background tasks and workers via Flower
API Root
Direct API access at http://localhost:8000/api/v1/
Seed Sample Data (Optional)
To test the platform with sample users and activity data:- Multiple test users with different connection states
- Sample workout data across multiple providers
- Time series data for heart rate, steps, and other metrics
Verify Installation
Check that all services are healthy:Next Steps
Architecture Overview
Understand how the platform components work together
API Reference
Explore available API endpoints and data models
Connect Providers
Set up OAuth for Garmin, Polar, Suunto, and more
Developer Guide
Learn how to extend the platform
Local Development Setup
For active development without Docker:Install Dependencies
- Backend
- Frontend
Requires Python 3.13+ with uv package manager:
Useful Commands
Common Makefile commands for managing the platform:| Command | Description |
|---|---|
make build | Rebuild Docker images from scratch |
make run | Start all services in detached mode |
make stop | Stop all running containers |
make down | Stop and remove all containers |
make watch | Start with hot-reload for development |
make test | Run backend test suite |
make migrate | Apply database migrations |
make create_migration m="Description" | Create a new migration |
make downgrade | Rollback the last migration |
make seed | Populate database with sample data |
make reset_db | ⚠️ WARNING: Delete all data |
Troubleshooting
Port already in use
Port already in use
If you see “address already in use” errors, check what’s using the ports:Stop the conflicting service or modify the port mappings in
docker-compose.yml.Database connection errors
Database connection errors
Ensure PostgreSQL is healthy before the backend starts:
Frontend can't connect to API
Frontend can't connect to API
Verify the backend URL in After changing environment variables, restart the frontend container:
frontend/.env:Permission denied errors on Mac/Linux
Permission denied errors on Mac/Linux
If you encounter permission issues with volumes:
Environment Variables
Key configuration options inbackend/config/.env:
Email for the auto-created admin account
Password for the admin account (change this in production!)
JWT signing key. Generate with:
Allowed origins for CORS. Add your production frontend URL here.
How often to sync data from connected providers (in seconds)
Provider-specific credentials (Garmin, Polar, Suunto, etc.) are configured in the same
.env file. See the Provider Integration guide for setup instructions.