My Counter
Contatori, obiettivi, streak, widget e webhook
My Counter trasforma il telefono in una raccolta di contatori personalizzati per monitorare abitudini, consumi, attività ricorrenti e obiettivi. Pensata per essere veloce nella vita quotidiana — un solo TAP per registrare un evento — con widget Glance sulla home, statistiche dettagliate (KPI, bar chart, line chart cumulato), report PDF condivisibili e un sistema di obiettivi differenziato che funziona sia per limiti da non superare (es. caffè, sigarette) sia per traguardi da raggiungere (es. bicchieri d'acqua, passi, allenamenti).
Ogni counter ha una **periodicità** (giornaliera/settimanale/mensile/annuale) e l'app **auto-consolida** silenziosamente il periodo precedente: snapshot dei valori finali, generazione di un Achievement (SUCCESS/FAILURE/NEUTRAL) e tracking di una **streak** crescente di successi consecutivi. Notifiche locali per hot-zone (80% del target/limit), bilancio di periodo, reminder giornaliero alle 22:00.
La modalità **Conta Tempo** trasforma il counter in un cronometro: primo TAP avvia, secondo TAP ferma — perfetto per "tempo al telefono", "tempo di studio profondo", "tempo in macchina". Le sessioni vengono salvate con inizio/fine/durata.
**Accountability via email**: ogni counter può avere uno o più indirizzi (coach, amico, mamma) separati da virgola/punto-e-virgola/spazio. A fine periodo l'app genera automaticamente un PDF di riepilogo e apre il client mail di sistema con tutti gli indirizzi pre-popolati e PDF già allegato — niente backend, niente login, tu confermi e invii. Master switch globale per disabilitare tutto durante le ferie.
**Webhook globale** (opzionale, opt-in): a ogni consolidamento l'app fa una POST JSON ad un endpoint configurabile, con payload completo (counter, goalType, valore finale, target, esito, streak) e header `X-myCounter-Signature` HMAC-SHA256 se è impostato un secret. Architettura a due livelli: un endpoint globale + un **tag per-counter** opzionale (es. `vices`, `health`, `work`) per il routing server-side. Compatibile con Zapier, n8n, IFTTT, Make.com.
Stack: Kotlin 2.2.10 + Jetpack Compose, Material 3, Room v4 con migrazioni esplicite (counters, tap_events, consolidations, achievements), DataStore Preferences, WorkManager (reminder giornaliero), MPAndroidChart per i grafici, Coil per le immagini, Glance 1.1.1 per il widget, FileProvider per condivisione PDF. minSdk 26, targetSdk 36.
Funzionalità
- Contatori multipli illimitati con identità visiva (colore, immagine, step)
- TAP rapido: un solo tap registra un evento, vibrazione opzionale
- Modalità Conta Tempo: il counter diventa cronometro (Play/Stop)
- Sistema Goal: TARGET (raggiungere) / LIMIT (non superare) / NONE
- Stati obiettivo: PROGRESS / HOT_ZONE / SUCCESS / FAILURE con badge dinamici
- Periodicità Giornaliera / Settimanale / Mensile / Annuale con auto-consolidamento
- Achievements & streak: bilancio automatico fine periodo, giorni consecutivi di SUCCESS
- Notifiche locali: hot-zone (80%), esito periodo, reminder giornaliero 22:00
- Accountability via email: una o più destinazioni, PDF auto-generato, master switch globale
- Webhook globale opt-in: POST JSON + HMAC-SHA256 + tag per-counter per routing
- Compatibilità Zapier / n8n / IFTTT / Make.com / server custom via webhook
- Statistiche con KPI, bar chart (Ora/Giorno/Settimana/Mese/Anno) e line chart cumulato
- Report PDF condivisibili (salva in Downloads o sheet di sistema)
- Widget Glance: TAP rapido sulla home, scelta counter al pinning, multi-istanza
- Widget Conta Tempo: Play/Stop con effetto pulsazione, durata sessione visibile
- Personalizzazione: 5 palette (Default / Sky / Sunset / Ocean / Forest), tema chiaro/scuro/sistema
- Storico completo dei TAP e delle sessioni (timestamp, valore prima/dopo, durata)
- Privacy-first: tutto in locale, niente account, niente analytics, niente FCM
Parametrizzazioni
- Nome, step di incremento, valore di partenza, reverse
- Tipo obiettivo: Traguardo (TARGET) / Limite (LIMIT) / Nessuno (NONE)
- Periodicità: Giornaliera / Settimanale / Mensile / Annuale
- Modalità Conta Tempo (cronometro) — obiettivo in minuti
- Costo per tap o per minuto + valuta
- Colore TAP (11 a scelta) e immagine TAP opzionale
- Email accountability: una o più, separate da virgola/punto-e-virgola/spazio
- Webhook tag (opzionale) per routing server-side (es. vices/health/work)
- Webhook globale: URL endpoint + secret HMAC-SHA256 opzionale + ping di test
- Master switch globale per accountability email (es. ferie)
- Master switch globale per webhook
- Confermа sotto zero per evitare decrementi accidentali
- Vibrazione al TAP abilitabile/disabilitabile
Pre-requisiti tecnici
- Android 8.0+ (API 26), targetSdk 36
- ~30 MB di spazio
- Permesso POST_NOTIFICATIONS (Android 13+) per le notifiche locali
- Permesso INTERNET solo se attivi il webhook (opt-in)
- Client mail di sistema configurato per la funzione accountability email (opzionale)
- Endpoint Zapier/n8n/IFTTT/server custom per il webhook (opzionale)