IronLog
Tracking degli allenamenti in palestra costruito su tre livelli: periodi di lavoro, scheda del periodo e log delle singole sedute. Tutto sul telefono, in un file SQLite, senza account ne' rete.
- Contesto
- Progetto personale
- Ruolo
- Sviluppo completo
- Stack
- Flutter · sqflite · intl · SpreadsheetML
- Test
- 28, dominio e percorso completo
- Stato
- In uso, APK firmato in debug
Descrizione del progetto
- Periodi — blocchi di lavoro con durata in settimane e data di inizio. La home ne mostra sei a schermo, in griglia calcolata sull'altezza disponibile, ordinati per data di fine. Ogni card riporta stato, settimana corrente, avanzamento e durata.
- Scheda — gli esercizi del periodo: serie fisse (
4 ×) oppure variabili (N ×) per le progressioni, range di ripetizioni con minimo e massimo, e il flag zavorra che cambia il significato della colonna carico. - Sedute — creandone una, l'app genera la tabella dalla scheda: una riga per serie, gia' pronta. Se ci sono esercizi a serie variabili chiede prima quante serie si faranno oggi. Il volume si aggiorna mentre si digita e il campo carico suggerisce l'ultimo usato per quell'esercizio nel periodo.
- Storico congelato — ogni seduta conserva la copia della scheda al momento della creazione: cambiare la scheda oggi non riscrive gli allenamenti di due mesi fa.
- Esporta e importa — tutto finisce in un foglio di calcolo
.xlse ne rientra.
Tech stack
| Framework | Flutter 3.44, Dart 3.12 |
|---|---|
| Database | SQLite tramite sqflite, cinque tabelle con ON DELETE CASCADE |
| Export | SpreadsheetML 2003 scritto a mano: XML puro, nessuna libreria |
Problema risolto
Segnavo gli allenamenti sulle note del telefono. Funziona finche' non serve rispondere a una domanda semplice: quanto ho caricato l'ultima volta su questo esercizio? Per saperlo dovevo scorrere all'indietro settimane di testo libero.
Le app di settore fanno il contrario del mio problema: chiedono un account, propongono schede preconfezionate e mettono lo storico dietro un abbonamento. Io volevo la mia scheda, la mia progressione e il carico precedente suggerito nel campo mentre scrivo. Lo storico congelato nasce da un errore reale: avevo modificato la scheda a meta' periodo e mi ero ritrovato le sedute passate riscritte con i valori nuovi, cioe' un archivio che raccontava una bugia.