Building

29,651 tasks later—what I learned vibe coding my to-do app

Checking off tasks became an addiction but the app behind it was failing me.


The custom to-do app I built—homescreen with task list

29,651. That’s how many tasks I’ve checked off in Todoist over the past decade-plus. Over time, checking off tasks became an addiction. But over the years the app was serving my needs less and less. So I decided to take matters into my own hands and build an app for a super active user of one.

For as long as I remember I was a productivity junkie. Gotta track those tasks, get them done fast and then onto the next thing. This was back in 2005—nearly 20 years ago. I enjoyed collecting notes on Evernote, writing to-do lists and checking them off. But I always wanted to build my own app. It was (supposedly) going to solve a lot of my problems.

I made plans, I made mind maps, I thought about it relentlessly. I wanted it to be perfect. So I added things like goals, projects, tasks, lists, tracking things like energy and estimated time to be spent.

Early plans and mind maps

It was 2011 and I was still thinking about it. I saw the success of apps like OmniFocus and Things and at the time wanted to build something similar on the web so that the app wouldn’t be tied to just one platform. But I never followed up and somewhere along the way I gave up and started using Todoist. The app was good enough and in some way its simplicity forced me to actually DO things as opposed to making elaborate plans calculating my effort expenditures but in reality not really making much progress.

Flash forward to 2020. The pandemic hits and with it comes the lockdown. I vividly remember that time, sitting alone in my San Francisco apartment, biding my time. Funny enough one of the things I remember was Todoist pushing an update making it slightly harder to edit tasks. I always liked playing around with my tasks in Todoist.

Probably still some sort of planning fallacy on my part—that by moving and editing tasks I was feeling productive. But this change felt a bit of a let down. I was so resistant that I didn’t refresh the Todoist tabs on my screen so that I wouldn’t lose the previous functionality but eventually had to restart my computer.

The pandemic strikes

In the end this was a small nit but the nits kept piling up. First it was the changes that I didn’t want, then the app was at times unbearably slow—at that point I think I’d completed up to 20,000 tasks or so. But I dealt with it. After all, I had to face reality. Coding and building is fun but also super hard—and I don’t find coding fun at all, in fact I hate the frustration of dealing with it. So I never did anything about it.

Three days to a prototype

Fast forward yet again. March 2026. On a whim, I wanted to vibe code this app. By this time I’d forgotten about my long list of requirements from the 2000s but I’d developed a certain workflow that I liked from Todoist—it was good 80% of the time but the 20% I found irksome. And I wanted more.

At a certain point all to-do apps are just CRUD apps but for me, a productivity junkie, I wanted to see how well I’m tracking. Are my weeks on or off? I’m getting a sort of high just looking at how much I’ve accomplished.

And so I decided to just go for it—let Claude figure it out. It took about 3 days on and off to build a working prototype that I hooked up to Firebase. But how good was this app really? I always treated AI LLMs as producing fun code—good enough for a prototype and playing around but not serious for production-grade builds.

But this all started changing in 2026. And if anything, Anthropic’s push towards using LLMs to write code and its employees being managers of AI agents pushed me to think like a manager too. How can I orchestrate my agents (even if my knowledge is still limited) to build something entirely custom, something personalized just for my own needs?

Almost 30,000 tasks

So I decided to just dogfood myself. Instead of still using Todoist, what if I used my app instead? One week wouldn’t hurt—even in the worst case if my data got messed up, I can still go back to Todoist. So I exported my 100 or so tasks, imported them into my app and started using it. And it surprisingly went without a hitch. Sure, I found bugs, issues and improvements along the way. In fact it became a bit of an obsession fixing a little bug here and there or making a tweak.

I skipped my typical design process, i.e. Figma first then code—or more like design it and then try to implement it, always fighting with the code. Instead I just prompted, refined and prompted some more. The app looked ok but was very rough around the edges. And there were emojis everywhere. But it didn’t matter because I was primarily building it for me and more importantly I got value from it from day one. My data was saved, nothing got inadvertently lost and just to make sure that was the case I made backups and implemented an export option.

The custom to-do app sidebar with Today, Tomorrow, and an Insights view
My sidebar—today, tomorrow and a dedicated insights

Fast forward a month later—the rough edges are gone. The app is polished and yes, like in any app there are some bugs here and there but usually these are minor or are opportunities for quality-of-life improvements.

Looking back

Looking back, a year ago, I don’t think I could have done this. But the tools that create tools have evolved. Remember “prompt engineers”? Yeah, that was going to be this big thing, right? Well now the tools are smart enough to understand your typos, interpret your intent and actively co-create the thing with you as opposed to purely executing your directive one to one.

Maybe the “SaaS apocalypse” is real. Figma’s stock has taken a big hit as Claude has moved into its territory, especially now with Claude Design. I don’t think this would apply to every company but I see it happening at the edges.

What’s next?

Playing around with the insights view

I am still debating whether to release this app more broadly or just use it. I just love building it. There’s no audience, no paid users demanding requirements—there’s just one user—me, and he’s really active, using it every day. It’s not a toy, it’s a real working app. I am changing it less frequently now—the core functionality and more is working for me.

As for my app? I’m going to keep extending it. Not to ship it. Not to grow it. Not to monetize it. It’s technically accessible—it’s on Firebase with auth, so if someone really wanted an account, they could make one—but that’s not the point. The point is that I built it quickly in just 3 days and it’s already a better fit than the app I spent a decade inside of.

Read next