Inspiration
A craving is a pop-up ad from your brain. You don't have to click it.
That line is the whole app. Cravings for nicotine usually pass in three to five minutes. The hard part isn't knowing that, it's getting through those five minutes at 11pm when the vape is right there.
Most quit apps do one of two things. Either they are a streak counter that resets to zero the first time you slipped (which is exactly when you need the app most), or they are soft, pastel meditation apps full of breathing circles and "you've got this!" Neither feels like something a young person trying to stop vaping would actually open.
I wanted something that:
- does the five minutes with you, right when the craving hits
- never punishes you for a slip
- gives you a reason to open it every day that isn't guilt
That last one is where the Tamagotchi came from.
What it does
The craving timer, free forever. Hit the big button when a craving hits and ride out a 5:00 timer. There are three small distraction games built in (pop-ups, smash, hold) and quick notes on what actually helps, like gum, a straw or a walk. When it's done, the app counts it: one more craving outlasted. This is never behind a paywall and no ad ever goes near it.
Slips without a lecture. Caved? Log it. The tally never resets. One bad hour shouldn't erase three good weeks, and an app that wipes your progress teaches you to stop logging.
Money you kept. Tell it what your habit costs, and it shows you what you haven't spent, from your own numbers. Every figure carries a ≈, because it's an estimate and I'm not going to pretend otherwise.
A companion that can't die. Quitting leaves a hole: freed money, freed time, freed headspace. In ReinUp, something moves into it. You get an egg, it hatches as you keep checking in, and it becomes Pip, Boo or Nib, a little pixel creature with its own room, decor, mini games and a map to build on. It's a Tamagotchi with everything stressful removed. It can't starve, it can't be neglected and it never asks you for anything.
Gems come from logging your day, measured against your own baseline, so a pack a day smoker doesn't earn more than a light vaper for the same effort. You get paid for showing up, not for how bad your habit was.
NIC. The craving itself, as a grumpy, quarantined pixel virus. He's the villain. He loses.
And the rest: stats, a taper plan whose line only ever moves down, awards, a shareable streak card, and an iOS home screen widget.
Everything stays on your phone. There's no account and no server. Settings has a one tap delete, and the app links to the free 1-800-QUIT-NOW quitline. ReinUp is a habit tracker, not a medical device, and it says so.
How it makes money
ReinUp Plus through RevenueCat, on one plus entitlement with two packages:
| Weekly | $6.99 a week |
| Lifetime | $89.99 once |
I priced it weekly because a week is how people quitting nicotine think about money. They know exactly what a week of pouches costs. So the paywall doesn't say "only $6.99!", it compares Plus to their own habit: "about a fifth of what you're burning." And there's a lifetime option for people who want to pay once and stop thinking about it.
The rule I set for Plus: it sells depth, never speed. The companion grows at exactly the same rate for free and paid users. A recovery app that sells a faster recovery is selling the wrong thing. Plus gets you every habit tracked instead of just your main one, your whole history, patterns by trigger and time of day, monthly receipts, your own lines in the craving flow, all three widgets, choosing which creature is in your egg, and the full map for its room.
All billing lives in one file, src/billing/purchases.ts, with a web twin so the whole app still runs in a browser. The prices on the paywall always come from the store through RevenueCat, so nobody in Tokyo gets quoted dollars.
How I built it
- Expo and React Native in TypeScript.
- An append only event log in SQLite. Nothing is ever edited or deleted (except when you wipe everything). Every number on screen, from the tally to the gems to the companion's growth, is calculated from that log. It's why "the tally never resets" is a rule in the code and not a promise in the copy.
- Money is stored in whole cents, never floats.
- A Swift widget built with
@bacons/apple-targets. - 64 tests covering money, awards, the gem economy and the projections.
- The App Store screenshots and the app icon are generated by scripts from the app's own drawing code, so they can't drift away from what the app really looks like.
Challenges I ran into
- App Review. My first build was rejected because the binary included Apple's tracking prompt, and the reviewer could never make it appear. It only showed up inside the ad flow, and in TestFlight the ad flow never started. The ad account was also having issues, so I made a call: ReinUp 1.0 ships with no ads at all and no tracking. Plus is the only way it makes money.
- Fairness in the economy. My first version paid gems for dollars saved, which quietly rewarded people for having been heavier smokers. It also counted "no slip logged" as a clean day, so deleting the app looked like a perfect record. I rebuilt it so you earn relative to your own baseline, and only by actually checking in.
- Tone. Making it funny without making fun of anyone. The rule became: dry text, delighted pixels. The companion never speaks, the narrator is deadpan, and all the warmth comes from the sprite hopping when you open the app.
Accomplishments I'm proud of
- The craving timer really works as a five minute tool, and it's free for everyone, forever.
- A companion system that gives people a reason to come back without any guilt, streak loss or pressure.
- An honest paywall that prices Plus against the user's own habit.
What I learned
Tiny design rules make the product. "The tally never resets", "every dollar carries a ≈", "the companion never speaks": each one took five minutes to write and changed dozens of decisions.
What's next for ReinUp
- Get through App Review and launch on iOS, then Android
- More lands to build on for the companion
- Home screen quick actions to start the craving timer in one tap
Why open source
I'm a student at NUST in Pakistan, and I'm submitting ReinUp to the Next Gen track as an open source project. The whole app is on GitHub under MIT with setup instructions, and it runs in a browser with npm run web if you want to try the craving timer yourself.
Built With
- expo.io
- react-native
- revenuecat
- sqlite
- storekit
- swift
- typescript
- widgetkit
Log in or sign up for Devpost to join the conversation.