Ascend

A Flutter habit app built around identity, not streaks. Daily check-ins tied to who you want to be, with local Hive storage and RevenueCat subscriptions.

2 min read#Flutter#Dart#Riverpod#Hive#RevenueCat

Overview

Ascend is a mobile habit app for iOS and Android. You pick an identity: runner, patient parent, whatever fits. You attach daily actions to it and check in against that person, not a streak counter.

Problem

Every habit app I tried treated a completed checkbox as the win. Miss a day and you’re back to zero. That never matched how I actually think about change. I care whether today’s behaviour lined up with the person I was trying to be, even when the task list looked messy.

Solution

I built it in Flutter with Riverpod for state, Hive for local storage, and RevenueCat for subscriptions. You create identities, hang habits off them, and log check-ins. A journey view tracks progress over time; a weekly reflection flow looks back at what worked. Home screen widgets and Health Connect can mark actions complete without opening the app.

The UI keeps coming back to one check: did I act like that person today?

Architecture

Flutter (Dart + Riverpod)


Hive (local persistence)

      ├── Home widgets
      ├── Health Connect
      └── RevenueCat (subscriptions)


Check-ins → Journey → Reflection

Lessons learned

  • The habit engine wasn’t the hard part. Deciding what question every screen should ask was.
  • Identity labels need to be loose enough to stick (“healthy”) but tight enough to mean something in daily actions.
  • I put the paywall after someone has a week of check-ins, not on first launch.
  • I’m also exploring pre-app onboarding on the web: a plan before someone downloads the app.

Related