A habits, reminders, and notes app I built for myself and left running. Habits with streaks, reminders with recurrence, and markdown daily notes all land on one calendar-driven home screen. It is the same idea as Bloom, the mobile app I helped build for a college project years earlier — this time as a website, so it could actually stay in use.
I start a lot of side projects and finish few of them, and habit apps were the worst offenders: every one I tried kept habits, one-off reminders, and notes in separate places, so none of them survived contact with an ordinary week. I wanted the three in a single view, and I wanted it somewhere I could not abandon by uninstalling an app.
Next.js 16 App Router with React 19 and Supabase for auth and data. Two decisions carry most of the weight. Reminders store an iCal-style recurrence rule and compute the next occurrence per item, instead of materializing every future instance — recurring reminders stay one row, and completing one advances it rather than closing the series. And notes can be locked behind a second password: the body is encrypted with AES-256-GCM under a scrypt-derived key and unlocked through a short-lived cookie with a five-attempt lockout, so a locked note is unreadable even to someone holding the database. Weekly recaps and reminder emails run as cron routes behind a shared secret and go out through Resend.
Live in production at natan.sh and still the thing I actually use. Cypress covers the login and register flows, and the codebase carries its own contributor guide.