Inspiration
I kept noticing the same problem with habit trackers: they seem designed to keep you tracking forever.
Most of them revolve around streaks. You complete something, protect the streak, miss a day, and suddenly weeks of progress can feel erased.
But that never made sense to me.
If I’m trying to build a habit like reading, exercising, or going for a walk, the real goal isn’t to become great at checking a box every day. The goal is for that behavior to eventually become natural enough that I don’t need the tracker anymore.
That idea became Motif.
I started with one question:
What if a habit tracker could help you build a habit, then eventually let that habit graduate?
Instead of treating habit formation as a fixed number of days, I wanted Motif to look at how the habit is actually developing.
What it does
Motif is a local-first habit tracker focused on sustainable consistency rather than perfect streaks.
Habits move through a formation journey:
Starting → Building → Strengthening → Ready to Graduate → Graduated
Instead of deciding that a habit is built after an arbitrary number of days, Motif considers multiple signals, including:
- consistency over time
- automaticity
- cue stability
- changes in automaticity
- recovery after missed days
- recent and previous reliability
Motif periodically asks short automaticity questions to understand whether a behavior is starting to feel natural.
Once the signals are strong enough, Motif can suggest that the habit is ready to graduate. The user still makes the final decision.
The app also includes:
- daily and weekly habit schedules
- local reminders
- progress visualization
- missed-day recovery
- habit stages
- automaticity check-ins
- pausing and archiving
- graduated-habit maintenance
- offline local storage
The core idea is simple:
the tracker is scaffolding, not the destination.
How we built it
Motif is built with React Native, Expo, TypeScript, and SQLite.
I designed it around a local-first architecture where SQLite acts as the source of truth for habit data.
One of the most important architectural decisions was separating habit logic from the UI.
The rules for things like:
- reliability
- recovery
- automaticity
- formation stages
- graduation readiness
live as deterministic domain logic rather than being embedded inside screens.
This made the system easier to reason about and test, especially because graduation depends on several signals working together.
For automaticity, Motif uses a short four-question check-in and tracks the score over time alongside cue stability.
The graduation evaluator then combines several criteria instead of depending on one streak or day count.
I also built local recurring notifications, habit lifecycle management, progress views, database migrations, and the flows for graduating and restoring habits.
The UI is intentionally minimal and dark-first. I wanted the app to feel calm and focused rather than becoming another complicated productivity dashboard.
Challenges we ran into
The biggest challenge was defining something that sounds simple:
When is a habit actually built?
There isn’t one number of days that works for every habit or every person.
Using a 21-day, 30-day, or 66-day rule would have been easy to implement, but it would also defeat the main idea behind Motif.
So the difficult part was designing a graduation model that combines multiple signals while still being understandable and transparent to the user.
Another challenge was deciding how to handle failure.
Traditional streak systems make this easy technically:
complete → complete → miss → reset
But that can create an all-or-nothing experience.
I wanted a missed day to be useful information rather than a punishment.
That led to recovery becoming part of Motif's model: not just asking whether someone missed, but how well they returned afterward.
Local-first architecture created another set of challenges. Without depending on a cloud backend for the core experience, persistence, migrations, notifications, date handling, and state consistency all need to work reliably on-device.
Accomplishments that we're proud of
The thing I’m most proud of is that Motif doesn’t feel like another streak tracker with a different interface.
The graduation system became a real part of the product rather than just a label.
A habit has to show several signs of becoming established before Motif considers it ready to graduate. The system looks at repeated behavior, automaticity, reliability, cue stability, and trends rather than simply counting days.
I’m also proud that the rules are deterministic and transparent.
There isn’t a hidden model deciding whether someone is “good” at their habit. The logic can be explained, tested, and understood.
Another accomplishment is keeping the core experience local-first.
Habit data stays on the device, and the app can perform its core tracking functionality without requiring an account or constant internet connection.
Most importantly, I think Motif now has a clear point of view:
A successful habit tracker should eventually help you need it less.
What we learned
The biggest thing I learned is that habit tracking and habit formation are not the same thing.
Someone can maintain a long streak because a notification reminds them every day, while the underlying behavior still might not feel automatic.
That made me think much more carefully about what progress should actually mean.
I also learned that recovery is underrated.
Real routines include bad days, travel, schedule changes, low motivation, and interruptions.
A habit that occasionally gets missed but consistently comes back may be stronger than a habit with a perfect streak under ideal conditions.
From a product perspective, building Motif also reinforced something I keep learning:
more information is not always a better product.
It would have been easy to add more charts, scores, dashboards, and metrics.
The harder part was deciding which information actually helps someone build the habit and which information simply gives them more things to monitor.
What's next for Motif: Offline Habit Tracker
The next step is improving how Motif supports people after the initial habit-building phase.
I want to keep refining:
- graduation and maintenance
- recovery insights
- progress visualization
- automaticity check-ins
- reminders without creating notification dependence
- ways to make the app useful while keeping it intentionally simple
I also want to learn from how people use graduation in real life.
Do they feel comfortable stopping active tracking?
Do some habits need to return from graduation?
Which signals are actually most useful to people?
The long-term goal is not to turn Motif into the most feature-packed habit tracker.
It is to make it better at answering one question:
Is this habit becoming something I can do without needing a tracker to tell me?
Built With
- react-native
- revenuecat
- sqlite
Log in or sign up for Devpost to join the conversation.