← Back to Projects

strava-analytics

Active 1.0.0 by manual
Open App

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

Shared Services

Database Auth

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-analytics

Create virtual environment

python3 -m venv venv source venv/bin/activate

Install dependencies

pip install -r requirements.txt

Set up environment

cp .env.example .env

Edit .env with your Strava credentials

Initialize database

flask db upgrade

Run backend

cd backend && python app.py

In 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/callback

Database

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=24

Sync Settings

SYNC_INTERVAL_MINUTES=60 WEBHOOK_SECRET=your-webhook-secret

Flask

FLASK_ENV=development FLASK_DEBUG=True SECRET_KEY=flask-secret-key

Frontend (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 test

All 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