Skip to content
← Back

My Counter

Counters, goals, streaks, widget and webhook

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

My Counter turns your phone into a collection of customizable counters for tracking habits, consumption, recurring activities and goals. Built to be fast for daily life — one TAP per event — with a Glance home-screen widget, detailed statistics (KPIs, bar chart, cumulative line chart), shareable PDF reports, and a differentiated goal system that works both for limits to stay under (coffee, cigarettes) and targets to reach (glasses of water, steps, workouts).

Each counter has a **periodicity** (daily/weekly/monthly/yearly) and the app **silently auto-consolidates** the previous period: snapshot of final values, Achievement generation (SUCCESS/FAILURE/NEUTRAL), and a growing **streak** of consecutive successes. Local notifications for hot-zone (80% of target/limit), period outcome, and a daily 22:00 reminder.

**Time Counter mode** turns the counter into a stopwatch: first TAP starts, second TAP stops — perfect for "phone time", "deep study time", "driving time". Sessions are saved with start/end/duration.

**Email accountability**: each counter can have one or more addresses (coach, friend, mom) separated by comma/semicolon/space. At period end the app automatically generates a summary PDF and opens the system mail client with all addresses pre-populated and PDF already attached — no backend, no login, you confirm and send. Global master switch to disable everything while on vacation.

**Global webhook** (opt-in): on every consolidation the app POSTs JSON to a configurable endpoint, with a complete payload (counter, goalType, final value, target, outcome, streak) and `X-myCounter-Signature` HMAC-SHA256 header if a secret is set. Two-level architecture: one global endpoint + an optional **per-counter tag** (`vices`, `health`, `work`) for server-side routing. Compatible with Zapier, n8n, IFTTT, Make.com.

Stack: Kotlin 2.2.10 + Jetpack Compose, Material 3, Room v4 with explicit migrations (counters, tap_events, consolidations, achievements), DataStore Preferences, WorkManager (daily reminder), MPAndroidChart for charts, Coil for images, Glance 1.1.1 for the widget, FileProvider for PDF sharing. minSdk 26, targetSdk 36.

Features

  • Unlimited counters with visual identity (color, image, step)
  • Quick TAP: one tap records an event, optional haptic feedback
  • Time Counter mode: turn the counter into a stopwatch (Play/Stop)
  • Goal system: TARGET (reach) / LIMIT (don't exceed) / NONE
  • Goal states: PROGRESS / HOT_ZONE / SUCCESS / FAILURE with dynamic badges
  • Daily / Weekly / Monthly / Yearly periodicity with silent auto-consolidation
  • Achievements & streak: automatic period outcome, consecutive SUCCESS days
  • Local notifications: hot-zone (80%), period outcome, daily 22:00 reminder
  • Email accountability: one or more recipients, auto-generated PDF, global master switch
  • Opt-in global webhook: POST JSON + HMAC-SHA256 + per-counter tag for routing
  • Compatible with Zapier / n8n / IFTTT / Make.com / custom servers via webhook
  • Stats with KPIs, bar chart (Hour/Day/Week/Month/Year) and cumulative line chart
  • Shareable PDF reports (save to Downloads or system share sheet)
  • Glance widget: quick TAP on home screen, counter picker on pinning, multi-instance
  • Time-mode widget: Play/Stop with pulsing effect, session duration visible
  • Customization: 5 palettes (Default / Sky / Sunset / Ocean / Forest), light/dark/system theme
  • Full history of TAPs and sessions (timestamp, value before/after, duration)
  • Privacy-first: everything local, no account, no analytics, no FCM

Configuration

  • Name, increment step, start value, reverse
  • Goal type: Target (TARGET) / Limit (LIMIT) / None (NONE)
  • Periodicity: Daily / Weekly / Monthly / Yearly
  • Time Counter mode (stopwatch) — goal in minutes
  • Cost per tap or per minute + currency
  • TAP color (11 to choose from) and optional TAP image
  • Email accountability: one or more, separated by comma/semicolon/space
  • Webhook tag (optional) for server-side routing (e.g. vices/health/work)
  • Global webhook: endpoint URL + optional HMAC-SHA256 secret + test ping
  • Global master switch for email accountability (e.g. on vacation)
  • Global master switch for webhook
  • Below-zero confirmation to prevent accidental decrements
  • TAP haptic feedback enable/disable

Technical prerequisites

  • Android 8.0+ (API 26), targetSdk 36
  • ~30 MB storage
  • POST_NOTIFICATIONS permission (Android 13+) for local notifications
  • INTERNET permission only if you enable the webhook (opt-in)
  • A system mail client configured for the accountability feature (optional)
  • A Zapier/n8n/IFTTT/custom endpoint for the webhook (optional)
Test track
Test on Play Store
GitHub Privacy policy