Bincio Autarchive
Caricamento…
bincio_autarchive è l’app mobile per importare e gestire le proprie attività in locale, senza dipendere dal cloud. Il suo caso d’uso principale è il Karoo 2 (ciclocomputer con Android embedded), ma funziona su qualsiasi dispositivo Android o iOS.
Repository: git.bincio.org/bincio/bincio_autarchive
Filosofia: local-first
I file originali (FIT/GPX) sul dispositivo sono la fonte di verità. L’app li estrae, calcola le metriche direttamente on-device, e sincronizza il risultato con bincioactivity. Non serve connessione internet per registrare o analizzare; la sincronizzazione avviene quando disponibile.
Pyodide: Python sul device
Il cuore dell’app è Pyodide — CPython compilato in WebAssembly che gira dentro una WebView. Questo permette di eseguire il codice di estrazione di bincio_activity (Python puro) direttamente sul device, senza un server intermedio.
Il flusso:
- App trova i file FIT/GPX sul dispositivo
- Li passa a Pyodide in una WebView
- Pyodide esegue
bincio extract→ produce BAS JSON - L’app salva i risultati in SQLite locale
- Al sync, carica i dati su bincioactivity
Karoo 2
Il Karoo 2 di Hammerhead è un ciclocomputer con Android 7 embedded. Alcune limitazioni specifiche:
- Schermo e hardware limitati rispetto a uno smartphone standard
- L’estrazione in-device tramite Pyodide è preferita al cloud proprio per la natura offline del dispositivo
- File FIT prodotti dal Karoo sono compatibili con l’estrattore
Sincronizzazione con bincio_activity
Il protocollo di sync è bidirezionale:
- Download — scarica metadati e attività da bincio_activity
- Upload — carica le attività estratte localmente
Le attività già presenti sul server non vengono ricaricate (deduplicazione per hash).
Stack
| Componente | Tecnologia |
|---|---|
| Framework | React Native (Expo Router) |
| Linguaggio | TypeScript |
| Estrazione | Pyodide (CPython + WebAssembly in WebView) |
| Database locale | SQLite (expo-sqlite) |
| Build | Expo (Expo Go per dev, Development Build per Pyodide) |
Note di sviluppo
Per usare Pyodide è necessario un Development Build (non Expo Go), perché richiede una WebView con permessi specifici. Lo script DEVELOPMENT.md nel repo documenta come costruire l’APK di sviluppo.