A picture of a laptop, phone and a to-do list on a desk

Why every developer should build a to-do list app

Max Girkins

5 minute read

a month ago

I once read that every junior developer should build a to-do list application at least once in their life. It’s a great way to learn some key skills, you can make the project more or less complicated at will, and there is no pressure to commercialize it as the market is so saturated that no one in their right mind would try and enter it. I’d like to reinforce this idea and encourage more junior developers to try their hand at a to-do list for another reason: no one else works exactly the way you do.

Learn key skills

When starting out learning about any field it is important to study broadly around the area and see how different topics fit together. If you wanted to become a historian you wouldn’t immediately spend all your time learning about The Boudican revolt of 60AD. First, you learn the basics and then you specialize once you’ve discovered what interests you and what you’re good at. It’s the same with web development.

Building a to-do list is a great way of learning those basics. It’s a simple CRUD app so you can learn basic HTTP requests, some HTML, CSS and Javascript, a little about databases etc. The key is that you’re getting a feel for how the pieces of web development fit together. Now you could build almost any CRUD app as a starter project and learn these concepts but a to-do list is the purest form of this in my opinion as I’ll explain next.

A sliding scale of complexity

A to-do list app is the ultimate set of training wheels for a junior developer. It lends itself so nicely to focusing on whichever aspect of development you want to learn first while ignoring the rest. Want to learn HTML and CSS? Hard code some todos and try to make it look nice. Want to learn about handling HTTP requests? Use Postman or similar and try to get your server to perform CRUD actions on an in-memory array of to-dos.

The point is you can start with the simplest building blocks of development and work your way up however far you want. Maybe you want a nice microservice to handle scheduling to-dos. Or you’ve decided to try your hand at mobile development, then build your app in Swift, Kotlin, Flutter etc. The possibilities of such a simple app are endless.

I initially built Tatask because I wanted a to-do system that worked the way I did (more on that later), but the initial spark to actually build it came because I found Alpine JS and decided I wanted to try building something using that. Then a few months later I found myself with shiny object syndrome and decided to rebuild it all in Svelte so I learned that too and now absolutely love Svelte. The best way to learn in my opinion is by building projects, there’s no way I’d have understood nearly as much if I’d simply read some documentation. A few months ago I decided I’d like to learn SwiftUI, so now Tatask has an iOS app and I know a reasonable amount about building Swift apps (with a diversion down the capacitor JS and Flutter routes briefly too!).

The point is, a to-do app is at its heart incredibly basic but at the same time has so much room for adding complexity and trying different tools and technologies.

There’s no pressure to commercialize the project

At this point, there are so many different to-do list apps around that for an individual it’s a terrible plan to try and make a business out of one. The market is so saturated and there’s not much differentiation (Tatask aside of course 😉). This lack of pressure makes working on a to-do list a pleasure. It’s like tending to a garden rather than a farm. Fundamentally you’re trying to grow things in both but a garden is a place for relaxation and beauty and trying new things in order to make a perfect space for yourself. A farm on the other hand is for others, you are beholden to the market and that brings stress and external influences out of your control.

I’ll admit that Tatask isn’t exactly a garden as I wanted to learn about marketing so I added some payment plans and tried some promotion, but nor is it exactly a farm as it’s still a small project not intended to take over my world.

To me Tatask is somewhat like a show garden, I invite people in to use and enjoy it, and if they spend a lot of time here then they can pay for it. I accept feature requests and fix broken fences etc. but I don’t spend all my time manning the gate. At the end of the day, Tatask is mainly built for me and it has delivered enormously on the promise of teaching me lessons, but even more so on the goal of making me more productive.

Build something that works in the way you do

Everyone is most productive in different circumstances, some like the Pomodoro technique, and others like scribbling everything on Post-it notes and picking them up at random. I like breaking tasks down into smaller and smaller chunks until I can fit the entire thing in my working memory (shockingly limited these days), and complete it in under an hour so I don’t get tired halfway through. What I’m saying is that no matter how many to-do list apps are out there, the perfect tool for you has probably not been built and you might be able to make yourself more efficient and more accomplished if you spend a weekend building it. Perhaps you want a giant list that randomizes order every time you open it so you can tackle serendipitous tasks. Build it! The payoff over time of a 5% increase in productivity quickly repays the initial time investment even if you disregard the skills you’ll learn along the way.


There are so many routes to becoming a software developer and building a to-do list application is definitely one of the best. I’ve learned so much from building Tatask and can’t recommend it highly enough to everyone else.

If you end up building your own, let me know, I’d love to visit your garden, and if you’re looking for a freelance developer for an interesting project I’m open to work :)

You can email me at [email protected]