Skip to content
/ foxrun Public

if you run and like open source this repo is for you !

Notifications You must be signed in to change notification settings

nannipy/foxrun

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

6 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

FOXRUN

Fox Run Analyzer Logo

Un'applicazione web full-stack per analizzare le performance di corsa utilizzando i dati di Strava.

๐Ÿš€ Caratteristiche

  • 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

๐Ÿ› ๏ธ Stack Tecnologico

Frontend

  • 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

Backend

  • 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

๐Ÿ“‹ Prerequisiti

๐Ÿ”ง Configurazione

1. Setup Strava Developer

  1. Vai su Strava API Settings
  2. Crea una nuova applicazione
  3. Imposta l'URL di redirect a http://localhost:5173/auth/callback
  4. Prendi nota di Client ID e Client Secret

2. Configurazione Ambiente

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

3. Installazione Dipendenze

# Frontend
cd frontend
bun install

# Backend
cd backend
pip install -r requirements.txt

๐Ÿš€ Avvio dell'Applicazione

Opzione 1: Docker Compose (Raccomandato)

docker-compose up --build

L'applicazione sarร  disponibile su:

Opzione 2: Sviluppo Locale

Backend

cd backend
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

Frontend

cd frontend
bun run dev

๐Ÿ“ฑ Utilizzo

  1. Accesso: Vai su http://localhost:5173
  2. Autenticazione: Clicca "Connetti con Strava" e autorizza l'applicazione
  3. Sincronizzazione: Le tue attivitร  verranno scaricate automaticamente
  4. Esplorazione: Naviga tra Dashboard, Attivitร , Trends, Performance, Routes, Calendar e Settings

๐Ÿ—‚๏ธ Struttura del Progetto

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

๐Ÿ”Œ API Endpoints

Autenticazione

  • GET /auth/strava/authorize - URL di autorizzazione Strava
  • GET /auth/strava/callback - Callback OAuth2 e generazione JWT
  • GET /auth/user/me - Dati utente corrente (richiede JWT) ๐Ÿ”’
  • GET /auth/user/{user_id} - Dati utente per ID

Attivitร  (richiede JWT ๐Ÿ”’)

  • POST /activities/sync - Sincronizzazione smart (dalla data ultima attivitร )
  • POST /activities/sync/extend?months_back=12 - Sincronizza X mesi indietro
  • GET /activities?skip=0&limit=50 - Lista attivitร  con paginazione e filtri
  • GET /activities/{activity_id} - Dettaglio attivitร  con lap e zone
  • GET /activities/stats - Statistiche aggregate con filtri data
  • GET /activities/trends?period=month - Tendenze temporali (week/month/year)

Mock Data (solo in DEBUG mode)

  • GET /mock/user - Dati utente mock
  • GET /mock/activities - Attivitร  mock

๐Ÿงช Testing

# Backend
cd backend
pytest

# Frontend
cd frontend
bun test

๐Ÿ“Š Funzionalitร  Implementate

โœ… Autenticazione e Sicurezza

  • OAuth2 con Strava
  • Autenticazione JWT
  • Gestione token e refresh
  • Protezione endpoints API

โœ… Sincronizzazione Dati

  • Sincronizzazione smart (dalla data ultima attivitร )
  • Sincronizzazione estesa (X mesi indietro)
  • Download automatico attivitร  da Strava
  • Salvataggio dati in database SQLite

โœ… Pagine Frontend

  • 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

โœ… Analisi e Visualizzazione

  • Grafici interattivi con Recharts
  • Mappe percorsi con Leaflet
  • Statistiche aggregate (distanza, tempo, elevazione)
  • Analisi laps e split
  • Metriche di ritmo e velocitร 

๐Ÿ”„ In Sviluppo

  • Analisi zone di frequenza cardiaca avanzate
  • Comparazione multi-attivitร 
  • Record personali automatici
  • Esportazione dati (CSV/PDF)

๐Ÿค Contribuire

  1. Fork il progetto
  2. Crea un branch per la feature (git checkout -b feature/AmazingFeature)
  3. Commit le modifiche (git commit -m 'Add some AmazingFeature')
  4. Push al branch (git push origin feature/AmazingFeature)
  5. Apri una Pull Request

Configurazione Variabili d'Ambiente

  1. Copia il file env.example in .env:
cp env.example .env
  1. **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/callback

Configurazione Strava

Dopo il deployment, aggiorna l'URL di redirect su Strava:

  1. Vai su Strava API Settings
  2. Cambia l'URL di redirect da http://localhost:5173/auth/callback a https://your-domain.vercel.app/auth/callback

Note Importanti

  • 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

๐Ÿ“„ Licenza

Questo progetto รจ sotto licenza MIT. Vedi il file LICENSE per i dettagli.

๐Ÿ†˜ Supporto

Per problemi o domande:

  1. Controlla la documentazione API su http://localhost:8000/docs
  2. Apri una issue su GitHub
  3. Controlla i log del backend per errori dettagliati

๐Ÿ”ฎ Roadmap

  • 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)

About

if you run and like open source this repo is for you !

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published