strava-analytics
Active
1.0.0
by manual
Multi-user Strava analytics platform with OAuth authentication, database persistence, and incremental activity syncing
Purpose
Created to build a full-featured multi-user analytics platform demonstrating OAuth integration, database design, API development, and React frontend with TypeScript
Tech Stack
Flask
Python
SQLAlchemy
React
TypeScript
SQLite
JWT
Docker
Tags
fitness
analytics
oauth
multi-user
api
Startup Command
cd backend && python app.py
Run from project directory: /root/ily.dog/apps/strava-analytics
External Dependencies
-
Strava OAuth credentials -
PostgreSQL (optional, for production)
README
Strava Analytics Platform
Multi-user Strava analytics platform with OAuth, database, and incremental syncing.
๐ Quick Start
Development
Clone and navigate
cd ~/projects/strava-analyticsCreate virtual environment
python3 -m venv venv
source venv/bin/activateInstall dependencies
pip install -r requirements.txtSet up environment
cp .env.example .env
Edit .env with your Strava credentials
Initialize database
flask db upgradeRun backend
cd backend && python app.pyIn another terminal, run frontend
cd frontend && npm install
npm run dev
Docker (Recommended)
docker-compose up -d
๐ Project Structure
strava-analytics/
โโโ backend/ # Python/Flask application
โ โโโ app.py
โ โโโ models/ # SQLAlchemy models
โ โโโ services/ # Business logic
โ โโโ api/ # REST API routes
โ โโโ tasks/ # Background jobs
โ โโโ db.py # Database config
โโโ frontend/ # React + TypeScript
โ โโโ src/
โ โโโ public/
โ โโโ package.json
โโโ shared/ # Shared types (if monorepo)
โโโ tests/
โ โโโ backend/
โ โโโ frontend/
โโโ docker-compose.yml
โโโ requirements.txt
โโโ IMPLEMENTATION_PLAN.md
๐ Environment Variables
Strava OAuth
STRAVA_CLIENT_ID=158555
STRAVA_CLIENT_SECRET=7e1b9182508ffb89e469baeb18bce85035e81787
STRAVA_REDIRECT_URI=http://localhost:5000/api/auth/strava/callbackDatabase
DATABASE_URL=sqlite:///strava_analytics.db
Or for PostgreSQL:
DATABASE_URL=postgresql://user:password@localhost/strava_analytics
JWT
JWT_SECRET_KEY=your-secret-key-here-change-in-production
JWT_EXPIRATION_HOURS=24Sync Settings
SYNC_INTERVAL_MINUTES=60
WEBHOOK_SECRET=your-webhook-secretFlask
FLASK_ENV=development
FLASK_DEBUG=True
SECRET_KEY=flask-secret-keyFrontend (during dev)
VITE_API_URL=http://localhost:5000
๐ Database
Migrations
Create migration
flask db migrate -m "Initial migration"Apply migrations
flask db upgrade
๐งช Testing
Backend tests
pytest tests/backend/Frontend tests
cd frontend && npm testAll tests
pytest
๐ API Documentation
When running locally:
- Swagger UI: http://localhost:5000/api/docs
- ReDoc: http://localhost:5000/api/redoc
๐ Development Workflow
1. Create feature branch: git checkout -b feature/add-maps
2. Implement changes
3. Test thoroughly
4. Update documentation
5. Submit PR
๐ License
MIT
Project Location: /root/ily.dog/apps/strava-analytics