← Tutti i progetti
Case study · progetto personale

Clynio

Un'app Android per ricordarsi i farmaci. Il difficile non è stato disegnarla, è stato farla suonare all'ora giusta.

Ruolo
Tutto: design, sviluppo, rilasci
Piattaforma
Android
Stack
Flutter, Dart, Kotlin
Versione
1.3.2
Home con i prossimi farmaci
Home
Diario della salute con grafico
Diario salute
Nuova misurazione
Nuova misurazione
QR di emergenza
QR di emergenza
Cartella clinica
Cartella clinica
Report PDF
Report PDF
Assistente AI
Assistente

Il punto di partenza

Un promemoria che non suona è peggio di nessun promemoria.

Clynio gestisce farmaci, appuntamenti, misurazioni e una cartella clinica. Ma tutto ruota intorno a una promessa: quando è ora della pillola, il telefono deve dirtelo. Anche se l'app è chiusa, anche se il telefono è in risparmio energetico, anche se è passata una settimana dall'ultima apertura.

L'ho pensata anche per chi con lo smartphone non va d'accordo: testi grandi, pochi tocchi, i bottoni "Preso" e "Posticipa" direttamente sulla notifica.

Il problema vero

Android fa di tutto per non svegliare la tua app.

Le notifiche ripetute "a calendario" sembrano la soluzione ovvia. Nella pratica, con la modalità Doze e le ottimizzazioni dei produttori, saltano. Non sempre: abbastanza spesso da non potersene fidare.

Come l'ho risolto

  1. Niente ripetizioni automatiche. Ogni promemoria è una notifica singola a data esatta. Quando suona, l'app programma subito la successiva.
  2. Un controllo che si ripara da solo. Ogni 12 ore, anche ad app chiusa, un processo confronta quello che dovrebbe essere programmato con quello che il sistema ha davvero in coda, e rimette a posto ciò che manca (schedule_reconciler).
  3. Id delle notifiche senza collisioni. Farmaci, appuntamenti, richiami e QR hanno ciascuno un intervallo di id riservato. Le formule sono coperte da test, perché due notifiche con lo stesso id si cancellano a vicenda senza dire niente.
  4. Kotlin dove Flutter non arriva. Il widget sulla home con il prossimo farmaco è nativo.
La parte più lunga non è stata scrivere le funzioni. È stata capire perché, ogni tanto, una notifica non arrivava.

Rilasci senza Play Store

Ogni volta che alzo la versione e faccio push, GitHub Actions compila l'APK, esegue i test (se falliscono si ferma tutto), controlla la dimensione del file e pubblica la release. L'app installata la trova da sola alla prossima apertura e propone l'aggiornamento.

Quando qualcosa va storto

Dalle impostazioni si esporta un report diagnostico: permessi, notifiche realmente programmate dal sistema, cronologia degli eventi anche ad app chiusa. Con un utente che dice "non mi ha suonato" è l'unico modo per capire davvero cosa è successo.

In numeri

134file Dart
12 hintervallo di auto-riparazione
1.3.2versione attuale

Cos'altro c'è dentro

Appuntamenti con promemoria, misurazioni di pressione, battito e glicemia con grafici, export PDF dello storico, backup su Google Drive per account, un QR con i dati medici essenziali visibile a schermo bloccato e un assistente AI opzionale.

Ti serve un'app che deve funzionare sempre, non quasi sempre?