Skip to content
← Indietro

My Counter

Contatori, obiettivi, streak, widget e webhook

Sperimentale
Kotlin Jetpack Compose Material 3 Room DataStore WorkManager Glance MPAndroidChart Coil Webhook HMAC-SHA256
My Counter

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)
Track di test
Test su Play Store
GitHub Privacy policy