Skip to content
Nekko Dojo
โ† The Guide

Building Real Things

Build Your First Project: The TODO App

Why a humble todo app is the perfect first project โ€” and how to build it twice, first in vanilla JS and then with a modern stack.

2 min read


Your first real project should be a todo app. I know โ€” it sounds boring. Stay with me, because this choice is deliberate and it works.

Why a todo app?

A todo app surprisingly has everything you need to learn to land a job, while being a product concept simple enough that anyone can grasp it instantly. You're never stuck explaining what you're building, so all your energy goes into how.

It scales with you. The same humble todo app can grow to cover genuinely complex topics โ€” docker containers, production deployments, caching, offline syncing, and more โ€” as you're ready for them.

And it's reusable as a learning vehicle. Because you already understand the product, you can rebuild the same todo app with each new technology or language you want to learn, without a brand-new app idea getting in the way of the actual learning. (Coming up with a new product and learning a new stack at the same time is one of the most common ways people stall.)

Step 1: Build it in plain HTML, CSS, and JavaScript

Start primitive. No frameworks. Just a single page you build by hand.

Features to build:

  • A simple, single page with your own styling.
  • A list of todos.
  • The ability to create a todo.
  • Edit a todo (use a pencil icon).
  • Delete a todo.

This forces you to understand the fundamentals โ€” the DOM, events, state โ€” without a framework hiding them from you.

Step 2: Rebuild it with modern tech

Now make the same app again, with a modern stack. This is valuable precisely because you already know the product domain โ€” so you'll clearly see where modern tools make things simpler (and where they add complexity).

Your stack:

  • Front-end framework: React or Vue. (Vue is cleaner and easier to learn; React is more popular at companies.)
  • CSS framework: Tailwind.
  • Backend server: Node.js.
  • Database: Supabase (a friendly, hosted Postgres with auth built in).

Put it on GitHub as you go

From the very start of this rebuild, version-control everything:

  • Start learning Git โ€” it will feel pointless right up until the day it saves you.
  • Create your GitHub account and make a new repository.
  • Add your code and get into the habit of committing and syncing regularly.

Do this now

Build the plain HTML/CSS/JS version of the todo app โ€” all five features โ€” and finish it. "Finished and ugly" beats "ambitious and abandoned" every time. Once it works, create a GitHub repo and push it. Then start the modern rebuild. Share your progress in the Discord for feedback.

Learning is better together

Get unstuck, find your first real issue, and meet others switching into tech. Join the Nekko Labs Discord โ€” bring your questions.

Join the Discord