Link to the project (I encourage you to give it a try!): github.com/Kazumin7/One-At-a-Time

I built One At A Time because normal task lists have an unfortunate feature: they show me every responsibility simultaneously. Instead, this app asks me to plan ahead, start the day, and work through tasks one at a time. New thoughts can still be captured, but they disappear into a cosmic "void" until planning time - essentially, a tiny personal event horizon with a REST API.

One At A Time app demo — completing tasks one by one

The project began as a TypeScript npm-workspaces monorepo. The client uses React 18 and Vite, while an Express server exposes the task API and stores everything locally in SQLite through better-sqlite3. Tasks can include dates, ordering, times, and locations, with @dnd-kit providing drag-and-drop reordering. Completing a task deletes it rather than preserving a history, because the app is designed to reduce mental clutter, and an archaeological record of checked boxes doesn't do much to help me with that.

As I used the app, I refined the workflow to align closer to what I found myself naturally wanting. Automatic time-based modes became explicit 'Start Day' and 'End Day' actions. I added date navigation, calendar previews, quick task capture, animated stars, custom icons, and a "sent to the void" animation that turned the idea into a fun visual theme.

As for deployment, I ran the Vite frontend and Express backend inside a VM, adjusted Vite's allowedHosts, and exposed the app to my iPhone through temporary Cloudflare tunnels. I also made it installable as a PWA (progressive web app), letting me pretend I created an app without having to pay Apple's ~hundred bucks fee.

Authentication briefly joined the stack after I considered tunnel privacy, but routing and blank-screen problems convinced me to remove it.

And that's that for an app I use daily.