Bincio Activity

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

ComponenteTecnologia
EstrattorePython, Haversine, RDP semplificato
ServerFastAPI + uvicorn
FrontendAstro 6, Svelte, MapLibre GL JS, Observable Plot
Authbincio auth (JWT condiviso)
DatabaseSQLite (users, sessions, invites)
Deploynginx + systemd + bare git repo