Bincio Activity
Caricamento…
bincio_activity è la piattaforma centrale per le statistiche sportive del gruppo. Aggrega attività in formato GPX/FIT/TCX, calcola metriche, e genera un sito web statico consultabile via browser.
Repository: git.bincio.org/bincio/bincio_activity · Produzione: activity.bincio.org
Cosa fa
- Importa file GPX, FIT e TCX da Strava, Garmin Connect o direttamente
- Calcola metriche (distanza, dislivello, velocità, FC, potenza, cadenza)
- Genera un sito statico con mappa, grafici e feed delle attività
- Supporta più utenti con feed federati (ogni utente ha il proprio shard)
- Gestisce sincronizzazione automatica da Strava e Garmin Connect
- Permette editing inline di titoli, descrizioni e foto
Architettura a due stadi
File GPX/FIT/TCX
│
▼
bincio extract — Parser Python, calcolo metriche, scrittura BAS JSON
│
▼
BAS data store — File JSON + GeoJSON su disco (formato aperto)
│
▼
bincio render — Astro build, produce HTML statico
│
▼
site/dist/ — Sito statico servito da nginx
Il BAS (Bincio Activity Schema) è il contratto tra i due stadi. Qualsiasi tool può produrre BAS JSON; il renderer lo consuma senza sapere nulla dell’origine.
Modalità di deploy
Single-user — Nessun login, nessun server. Basta bincio render e caricare dist/ su qualsiasi host statico.
Multi-user (VPS) — bincio serve è un server FastAPI che gestisce auth, gestione utenti e operazioni di scrittura. nginx serve i file statici; il server gestisce solo /api/*.
nginx
├── /* → /var/www/bincio/ (HTML statico)
└── /api/* → 127.0.0.1:4041 (bincio serve)
Federazione
Ogni utente ha un feed autonomo ({handle}/_merged/index.json). Il manifest radice (index.json) elenca tutti gli shard. Il browser li scarica in parallelo e costruisce il feed combinato lato client — nessuna aggregazione server-side.
È possibile includere shard di istanze remote (URL esterni): le attività appaiono nel feed con attribution @handle.
Deploy Docker
Per chi vuole istanza propria: docker_bincio_activity è un Docker Compose wrapper che include nginx, il server bincio e il build del sito. Configurazione via .env.
Stack
| Componente | Tecnologia |
|---|---|
| Estrattore | Python, Haversine, RDP semplificato |
| Server | FastAPI + uvicorn |
| Frontend | Astro 6, Svelte, MapLibre GL JS, Observable Plot |
| Auth | bincio auth (JWT condiviso) |
| Database | SQLite (users, sessions, invites) |
| Deploy | nginx + systemd + bare git repo |