badver
4 hours ago
I built this for my own use. Most habit trackers are built around a streak: miss one day and the big number goes back to zero, and that reset is often the moment people quit.
Habenna models a habit as a weekly rate (3 of 7, 4 of 7) instead of a chain. Each habit gets a monthly allowance of "grace days". When a week ends short of its goal, the missing days come out of that allowance and the record stays intact. Covered days show as an outlined slot, never red. There are no notifications unless you turn one on for a specific habit.
Tech: Flutter (iOS + Android, phone and tablet), Riverpod, data stored locally first, and an encrypted Firestore copy in the EU under an anonymous Firebase ID. There's no email or password. Home screen widgets are native (WidgetKit on iOS, RemoteViews on Android) and fed from Dart through home_widget. 10 locales.
The free tier is unlimited habits, widget, heatmap, CSV export, no ads and no account. The paid tier is sync and automatic backup (subscription or one-time).
I'm happy to go into how grace days are computed, or the widget plumbing.
gus_massa
an hour ago
Doulingo has "streak savers" so you can miss a day from time to time. I guess angry people quit.