Tutti i progetti personali

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
Home di IronLog: titolo "I tuoi periodi" e la card del periodo Forza, in corso alla settimana 1 di 8.
La home: i periodi di lavoro, con stato e avanzamento
Dettaglio del periodo Accumulo: la scheda con sei esercizi, ognuno con serie e range di ripetizioni, e sotto la sezione Sedute.
Il periodo: la scheda in alto, le sedute sotto

Descrizione del progetto

Lo stesso periodo senza esercizi: la scheda invita ad aggiungerli e la sezione Sedute avvisa che vanno generate dalla scheda.
Senza scheda non ci sono sedute: l'ordine dei tre livelli e' obbligato, e l'app lo dice invece di mostrare un elenco vuoto
  • 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 .xls e ne rientra.

Tech stack

FrameworkFlutter 3.44, Dart 3.12
DatabaseSQLite tramite sqflite, cinque tabelle con ON DELETE CASCADE
ExportSpreadsheetML 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.