← All experiments

Daybreak

Daybreak is a personal planning app I built to replace Sunsama. A calm, opinionated daily planner that forces a morning ritual, a weekly check-in, and a focus timer on every task — with a small surface area and no subscription to renew.

Client Self-initiated
Role Designer & Engineer
Services
Product DesignEngineering
Year 2026

What it is

Daybreak is a single-user planning app for one person: me. It runs as a small web app on a tiny VPS, syncs across my phone and laptop, and only asks me two questions a day — what am I doing today, and how did yesterday go. Everything else is designed to get out of the way.

Why I built it

I was a Sunsama subscriber for two years. I liked the rituals, I did not like paying $20 a month for a tool that had slowly drifted toward the enterprise and kept adding features I never used. Every alternative I looked at was either a full task-management suite trying to replace Linear, or a bare todo list with no opinion about how a day should feel.

I wanted something opinionated and small: a morning plan, a weekly check-in, and a focus timer that I actually use. Building it myself also let me collapse my Google Calendar, my Basecamp projects, and a small pile of recurring routines into one view, shaped exactly the way I work.

Sunrise ritual — 'Good morning, Kosta' with a quiet look back at yesterday before planning today

What it does

Sunrise. Every morning starts on a cream page with a single prompt — “Good morning, Kosta” — and a quiet acknowledgement of how yesterday went. One button, Plan today, takes me into the planning flow. No dashboards, no notifications, no streak counters.

Today. The planning canvas is a tasks column beside a 24-hour timeline. Calendar events from Google sit on the timeline as colour-coded blocks; tasks dragged in from the Basecamp panel on the right land in the list. Everything is one drag away from being scheduled or deferred.

Weekly check-in. Once a week, Daybreak asks for the two things that would make the week feel like a win — and two more only if they matter. It is the one place the app gets bossy: the check-in is not dismissable until it is written. This is what a weekly review without guilt looks like.

Focus timer. Opening a task pushes it into a full-screen focus view with a timer, a notes field, and a link back to the source in Basecamp. Time is logged per task, so the weekly check-in can show me where my hours actually went versus where I thought they went.

Today view with the Basecamp panel open on the right, listing assigned to-dos from connected projects
Weekly check-in — 'This week.' — with two required wins and two optional slots

How it's built

Daybreak runs on the 37signals stack: Rails 8.1 with Hotwire for the UI, SQLite as the primary database with Litestream for off-box backups, and Solid Queue for background jobs. The whole thing is deployed with Kamal to a $6 Hetzner VPS. No Redis, no Postgres, no React, no build step on the server.

Turbo frames drive almost every interaction — dragging a task between today and later, opening a day’s reflection, toggling a checkbox, running the focus timer — so the app feels instant without me hand-writing JavaScript for each one. A small handful of Stimulus controllers handle the pieces that need real client state (keyboard shortcuts, the timeline drag handles, the weekly check-in modal).

Picking this stack was the point as much as the product. I wanted to prove to myself that one person could design, build, and run a product end-to-end without a team, without a SaaS bill, and without a frontend framework. The answer is yes, and faster than I expected.

Focus timer for a single task — full-screen, distraction-free, with planned vs actual time and private notes

What I learned

Building for one user — me — is a different sport. Every time I reached for a setting, a preference, or a config option, I could just decide. That removed an enormous amount of surface area and made the product sharper. It is also a good reminder that a lot of software complexity comes from trying to serve the next hypothetical user rather than the one in front of you.

The Hotwire stack held up under real use. I have been on it for three months, and the only thing I reach for outside the defaults is a small CSS layer for the timeline view. Everything else — auth, background jobs, deployment, file storage — is whatever Rails ships with.

GitHub · daybreakplanner.com

← All work
View case →