All work

RIPEN

A habit tracker that grows one tree for your whole life: from research to a Google Play submission in six weeks

Role
Solo: research, product, design and release
Team
Solo; AI agents write the code (Claude Code, DeepSeek)
Timeline
Aug 19 – Sep 28, 2026 (6 weeks)
Scope
iOS & Android · solo
Status
Live on iOS & Android
Live
ripen.day
  • Research agents analysed 873 negative reviews before any design
  • No account; an encrypted backup moves the tree to a new phone
  • 7 languages; live on Google Play and the App Store

RIPEN is a habit tracker where your habits grow one tree for your whole life. You can cut it down at any time and plant a new one. In reviews, people leave habit trackers when a streak breaks or a subscription renews. In RIPEN a missed day drops a leaf and your progress stays, and you pay once.

Three RIPEN screens: a tree with leaves on a pale morning, the “welcome back” sheet after missed days, and “a fruit grew” with a gold fruit The mechanic in three screens: a leaf for a marked day, leaves fall for missed ones, a fruit at 66.

From “hard habits” to a tree

The first concept, after reading Atomic Habits, was “hard habits”: strict streaks, miss a day and the habit burns. It was too harsh, and that niche is crowded. I wanted something you look after, like a tamagotchi: a tracker inside a small world that changes on its own, where you only leave a trace. After a day of sketching and reference research, I settled on one tree for your whole life.

The art direction came from Kentucky Route Zero and Night in the Woods, and from my own illustrations of a couple of years ago: noir, one colour, thin lines. My rule for every screen: everything alive in the app moves, grows and has consequences, and the interface is drawn in thin lines, to contrast what lives with what people made.

Moodboard: Kentucky Route Zero, Night in the Woods and my own earlier illustrations around the rejected “Hard habits” prototype The rejected “hard habits” prototype among the references.

Research ruled out two of my hypotheses

Research agents analysed 873 one- and two-star reviews and about 25 Reddit threads against my questions. Subscriptions topped the complaints (256 reviews), and people whose streak breaks just leave silently. I expected identity to sell, but only two people mentioned it, so I kept it out of the headline and left it in how the tree is built. I also expected complaints about too many stats. Instead, people wanted one number, not a daily verdict.

So a missed day costs one leaf, and Pro is a one-time purchase. Paid extras are mostly cosmetic. I didn’t want to put habits people already built behind a subscription. RIPEN is a personal project. It costs about $5 a month to run, so there’s no reason to shut it down.

No account, but you can move to a new phone

There’s no account, no sign-up and no analytics. Everything stays on the phone. But people change phones, often from iPhone to Android, and an account-free app usually loses everything on the way. So the app encrypts a copy and sends it to a small server. The key is ten words that only the user has. The server never sees what’s inside. At first I wrote my own encryption. It fell under US export controls, the same kind of law that covers tanks and missiles. So I switched to the standard encryption built into iOS and Android and made the two work with each other. The new server didn’t accept the old encryption, and all 20 beta testers at the time lost their trees. I wrote to them: “Sorry, guys, you’ll have to grow new ones.” The ten-word phrase caused all the October bugs, but I’m keeping it: it’s what lets the app work without an account and still move to a new phone.

Three screens: restore a tree with ten words, the recovery secret, and the privacy sheet Restore on a new phone, the recovery secret, the privacy sheet.

Sharing without accounts

Since a copy was already on a server, sharing took little extra work. Every tree can get a public page with a unique link, drawn from its seed, so anyone can watch it grow without knowing who it belongs to. A generator turns a month or a year into one video, a day per frame, and stills to post. 12 trees are public right now.

Three screens: the monthly video maker, the share sheet with a public link, and the tree’s public page in a browser A month or a year as a video, a public link, and the tree’s page on my.ripen.day.

Five of seven paywall entry points took the money and opened nothing

You tap “time machine”, pay, the sheet closes, and the screen you paid for doesn’t open. Five of the seven entry points worked like that. An earlier audit had flagged it, only two got fixed, and for a month nobody noticed: nothing crashed, and as the developer I already had Pro. The same audit found “restore purchases on a new phone” promised in seven languages, though purchases don’t cross between the App Store and Google Play. Without a receipt server I couldn’t make purchases move between stores, so I changed the paywall text to “you pay once in this store”.

The “Pro, paid once” sheet with lines to seven entry points, five of which led nowhere The seven entry points to the paywall.

The habit card went from 24 objects to 4

One card had 11 font sizes and said “marked today” four ways at once. Now it shows only the name, one number, the week and the tap for today.

Onboarding

It had to explain the mechanic, show the end result and look alive. A beta tester said “I don’t get it at all”: the slides explained rules in words. I switched to one example tree growing five days per slide. Over three weeks it went through about twenty rounds of changes, four of them full reworks, each after short interviews with beta testers from different professions watching a live build.

Onboarding slides: the same example tree growing from slide to slide One example tree, five days further on each slide.

No two trees are the same

Every tree grows from its own seed, and the seed shapes everything around it: the branches, the cypresses on the horizon, the grass, even how the weather runs. If someone doesn’t like how theirs came out, a paid extra lets them pick a new seed. Like the other extras, it’s only cosmetic and doesn’t lock any progress.

Eight trees grown from different seeds, each with its own branches, cypresses and grass Eight trees from eight seeds.

The world around the tree

The world around the tree changes on its own: seasons and weather change, and the sound changes with them. Crickets only sing on summer nights. Snow settles on the fallen leaves, the cypresses and the ground. The grass responds to the tree’s size and doesn’t grow in its shade. About one night in ten there’s an aurora. Nobody asked for any of this. I added it so opening the app is more than marking a habit.

The same tree in fog, at sunset, in snow, in rain, under an aurora, at golden hour and at night Fog, sunset, snow, rain, the rare aurora, golden hour, night.

The launch

I held the approved Android build so both stores could launch together, because a launch on Show HN or Product Hunt only works once. I still haven’t done either. Apple then rejected iOS: the reviewer never reached the paid feature, since a purchase failed on an unconfirmed agreement. Meanwhile Android went live early by accident. An agent wanted to pull it until a hotfix was ready. I kept it in the store and shipped the fix that evening.

Store screenshots in German, French and Spanish Store screenshots, seven languages.

How I worked

I decide anything a person sees or touches. Since November the routine code goes to DeepSeek through Aider, and Claude Code takes the hard tasks and checks DeepSeek’s work. The decision log has 638 entries, each with the options I rejected. The code has 1,045 tests, and I check the agents’ reports too: one said “built on the phone” seven times while the script was failing.

Hand-drawn perspective lines, horizon and light rays over an early scene My perspective sketch for the early world scene.

Where it is now

Live on Google Play since October 14 and on the App Store since October 28, after 14 days in Apple’s queue. With no analytics and no accounts, the only signal is a script that counts backups on the server without reading them: 166 backup slots by October 31, 99 from Android and 67 from iPhone. 93 of them stopped before October 1, when the encryption changed, so they’re mostly September testers. A slot isn’t a person: one person with two recovery phrases makes two. One Android tree active since the Google Play launch has been saved 38 times, and it isn’t mine. Of the 10 new slots from October 28 to 31, 6 were saved more than once, one of them 18 times in four days. It’s a short window: three of the single saves are only hours old, and a new recovery phrase also makes a new slot. Version 1.1.0 reached both stores in early November, with 5,044 stars in their real places for your date, hour and part of the world. In the 28 days to November 3, the Google Play page was viewed about 3,850 times and the app was installed on 5 devices. The App Store gave 6 downloads by November 2. No Pro sales figures yet.

What I’d do differently

  • Check copy against code from day one. Rewriting 155 strings against the code later turned up six false public promises.
  • Start distribution earlier, and smaller. Daily posting brought zero followers in two days and was a plan I wouldn’t keep. Distribution is my weakest area. I don’t enjoy social media, and cold emails alone don’t bring users.

Open to work

Hiring a designer who can also run the backlog?

I’m looking for a senior or founding product designer role, remote in the EU, where I own a problem from research to release.

B2B contract · available in 2–4 weeks · no visa sponsorship needed (EU)

Kraków · CET/CEST