Un'applicazione web full-stack per analizzare le performance di corsa utilizzando i dati di Strava.
- Autenticazione Strava: Connessione sicura tramite OAuth2
- Sincronizzazione Dati: Download automatico delle attivitร da Strava
- Dashboard Interattivo: Visualizzazione delle metriche chiave e tendenze
- Elenco Attivitร : Tabella completa con filtri e ricerca
- Analisi Dettagliata: Grafici e statistiche per ogni attivitร
- Interfaccia Moderna: UI responsive con Tailwind CSS e Radix UI
- React 18 con TypeScript
- Vite per il build e development
- Bun come runtime e package manager
- Tailwind CSS per lo styling (liquid glass design)
- Radix UI per i componenti accessibili
- Recharts per i grafici interattivi
- Leaflet per le mappe interattive
- React Query per la gestione dello stato
- React Router per la navigazione
- FastAPI (Python 3.11+)
- SQLAlchemy per l'ORM
- SQLite per il database
- JWT per l'autenticazione
- Stravalib per l'integrazione con Strava
- Pandas/NumPy per l'analisi dei dati
- Bun runtime (https://bun.sh)
- Python 3.11+
- Account Strava Developer
- Vai su Strava API Settings
- Crea una nuova applicazione
- Imposta l'URL di redirect a
http://localhost:5173/auth/callback - Prendi nota di
Client IDeClient Secret
Crea un file .env nella root del progetto:
# Strava API
STRAVA_CLIENT_ID=your_client_id
STRAVA_CLIENT_SECRET=your_client_secret
# Frontend
VITE_API_URL=http://localhost:8000# Frontend
cd frontend
bun install
# Backend
cd backend
pip install -r requirements.txtdocker-compose up --buildL'applicazione sarร disponibile su:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/docs
cd backend
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000cd frontend
bun run dev- Accesso: Vai su http://localhost:5173
- Autenticazione: Clicca "Connetti con Strava" e autorizza l'applicazione
- Sincronizzazione: Le tue attivitร verranno scaricate automaticamente
- Esplorazione: Naviga tra Dashboard, Attivitร , Trends, Performance, Routes, Calendar e Settings
foxrun/
โโโ frontend/ # Frontend React + Vite
โ โโโ src/
โ โ โโโ components/ # Componenti UI (MetricCard, Layout, etc.)
โ โ โโโ hooks/ # Custom hooks
โ โ โโโ lib/ # Utilitร e API client
โ โ โโโ pages/ # Pagine (Dashboard, Activities, Trends, etc.)
โ โ โโโ App.tsx # App principale
โ โ โโโ index.css # Stili globali
โ โโโ package.json
โ โโโ bun.lockb # Bun lockfile
โโโ backend/ # Backend FastAPI
โ โโโ app/
โ โ โโโ api/ # Endpoint API (auth, activities, mock)
โ โ โโโ core/ # Configurazione e security
โ โ โโโ db/ # Database setup
โ โ โโโ models/ # Modelli SQLAlchemy
โ โ โโโ schemas/ # Schemi Pydantic
โ โ โโโ services/ # Logica di business (StravaService)
โ โ โโโ utils/ # Utilitร
โ โ โโโ main.py # App principale FastAPI
โ โโโ requirements.txt
โ โโโ strava_analyzer.db # Database SQLite
โโโ docker-compose.yml # Docker orchestration
โโโ README.md
GET /auth/strava/authorize- URL di autorizzazione StravaGET /auth/strava/callback- Callback OAuth2 e generazione JWTGET /auth/user/me- Dati utente corrente (richiede JWT) ๐GET /auth/user/{user_id}- Dati utente per ID
POST /activities/sync- Sincronizzazione smart (dalla data ultima attivitร )POST /activities/sync/extend?months_back=12- Sincronizza X mesi indietroGET /activities?skip=0&limit=50- Lista attivitร con paginazione e filtriGET /activities/{activity_id}- Dettaglio attivitร con lap e zoneGET /activities/stats- Statistiche aggregate con filtri dataGET /activities/trends?period=month- Tendenze temporali (week/month/year)
GET /mock/user- Dati utente mockGET /mock/activities- Attivitร mock
# Backend
cd backend
pytest
# Frontend
cd frontend
bun test- OAuth2 con Strava
- Autenticazione JWT
- Gestione token e refresh
- Protezione endpoints API
- Sincronizzazione smart (dalla data ultima attivitร )
- Sincronizzazione estesa (X mesi indietro)
- Download automatico attivitร da Strava
- Salvataggio dati in database SQLite
- Dashboard - Metriche aggregate e grafici di tendenza
- Activities - Lista completa con filtri, ordinamento e ricerca
- Activity Detail - Vista dettagliata con mappa interattiva Leaflet
- Trends - Analisi temporali e tendenze
- Performance - Metriche di performance e progressi
- Routes - Visualizzazione percorsi
- Calendar - Vista calendario delle attivitร
- Settings - Gestione impostazioni utente
- Grafici interattivi con Recharts
- Mappe percorsi con Leaflet
- Statistiche aggregate (distanza, tempo, elevazione)
- Analisi laps e split
- Metriche di ritmo e velocitร
- Analisi zone di frequenza cardiaca avanzate
- Comparazione multi-attivitร
- Record personali automatici
- Esportazione dati (CSV/PDF)
- Fork il progetto
- Crea un branch per la feature (
git checkout -b feature/AmazingFeature) - Commit le modifiche (
git commit -m 'Add some AmazingFeature') - Push al branch (
git push origin feature/AmazingFeature) - Apri una Pull Request
- Copia il file
env.examplein.env:
cp env.example .env- **Configura le variabili d'ambiente **:
VITE_API_URL=https://your-backend-url.vercel.app
VITE_STRAVA_CLIENT_ID=your_strava_client_id
VITE_STRAVA_REDIRECT_URI=https://your-frontend-url.vercel.app/auth/callbackDopo il deployment, aggiorna l'URL di redirect su Strava:
- Vai su Strava API Settings
- Cambia l'URL di redirect da
http://localhost:5173/auth/callbackahttps://your-domain.vercel.app/auth/callback
- Backend: Assicurati che il backend sia deployato e accessibile
- CORS: Il backend deve permettere richieste dal dominio Vercel
- HTTPS: Vercel fornisce automaticamente HTTPS
- Environment Variables: Configura tutte le variabili necessarie su Vercel
Questo progetto รจ sotto licenza MIT. Vedi il file LICENSE per i dettagli.
Per problemi o domande:
- Controlla la documentazione API su http://localhost:8000/docs
- Apri una issue su GitHub
- Controlla i log del backend per errori dettagliati
- Integrazione con altri servizi (Garmin, TrainingPeaks)
- Analisi dei segmenti Strava
- Piani di allenamento personalizzati
- Notifiche e alert
- Esportazione dati in CSV/PDF
- App mobile (React Native)
