Bincio Autarchive

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:

  1. App trova i file FIT/GPX sul dispositivo
  2. Li passa a Pyodide in una WebView
  3. Pyodide esegue bincio extract → produce BAS JSON
  4. L’app salva i risultati in SQLite locale
  5. 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

ComponenteTecnologia
FrameworkReact Native (Expo Router)
LinguaggioTypeScript
EstrazionePyodide (CPython + WebAssembly in WebView)
Database localeSQLite (expo-sqlite)
BuildExpo (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.

Links To This Page
Attributes
Links