Well Planned, the checklist app I built and then retired
Well Planned was a checklist app with a deadpan sense of humour, built solo with Claude Code and live on the web until October 2026, when I retired it. I stopped using it, and I’d rather write down what it taught me than leave a dead link on my site.
The problem
I wanted a task and planning app that was clean, fast and got out of the way, where tasks are grouped into phases instead of piling up in one endless list, and where reminders actually arrive. The name comes from a Finnish saying, hyvin suunniteltu on puoliksi tehty, which roughly means that a well planned job is half done. The tagline was “half the work, allegedly”.
What I built
A Next.js 14 web app and an Expo Android app in one pnpm monorepo, sharing a single Supabase backend. Changes sync in real time between devices, tasks reorder by drag and drop, and each phase can carry a reminder. Reminders go out as push notifications through Expo and Firebase Cloud Messaging on Android and through the browser’s notification API on the web, sent by a Supabase Edge Function on a pg_cron schedule.
Sign-in was an emailed one-time code through Brevo. I started with magic links and dropped them, because deep link handling on Android is fragile enough that I didn’t want login depending on it.
The business model was freemium. Free gave you three phases, unlimited tasks and one active reminder, and Pro at €3.99 a month or €29.99 a year lifted the limits. I enforced those limits with Postgres triggers instead of in the app, so no client could talk its way past the paywall. Payments ran through Lemon Squeezy with HMAC-verified webhooks, and I tested the whole paid flow end to end in test mode. Checkout was web-only on purpose. Skipping Google Play Billing meant skipping Google’s revenue share.
Around that sat a landing page, a privacy policy, terms of service and Vercel Analytics. I built the Android release locally with the Android SDK command line tools, because the free EAS build queue was slower than my patience, and got as far as a production bundle. As with my other projects, Claude Code wrote the code, and I designed the product, the rules and the tests.
What happened
I stopped using it. About three months later Brevo marked my SMTP keys inactive for lack of use, which for this app is more than a footnote, because with no email there is no sign-in. I decided not to renew the domain either, so I’m retiring Well Planned on purpose instead of letting it rot. That means switching off the reminder job and the paid plans along with the domain, and taking the links down from my LinkedIn and from this site.
What I learned
The build itself held up. The parts of a freemium app that sound boring turned out to be the ones that mattered, namely limits in the database instead of the UI, signed webhooks and a payment flow tested before any real money touched it. Picking the platform constraint early paid off as well, since the Android deep link problem shaped the login design before it could become a bug.
Stack
- Next.js 14 and Expo in a pnpm monorepo, with EAS Build
- Supabase with Postgres, Realtime, Edge Functions and pg_cron
- Expo push notifications and Firebase Cloud Messaging
- Brevo SMTP for one-time-code sign-in
- Lemon Squeezy for payments
- Vercel for hosting and analytics