Every to-do app I tried wanted something from me. An account. An email. A sync service. A subscription for the feature that lets you delete a task. I did not want any of that. I wanted to write a task down in a terminal and have it still be there tomorrow.

So I built To-Do CLI. It is the smallest app I have ever built, and it is the one I actually open every day.

It is a small command line app in C++. Add tasks, list them, mark them done, delete them. That is the whole feature list, and that is enough. The tasks are saved to a file called tasks.txt, so they persist between runs. You close the terminal, you come back tomorrow, your list is still there.

What it does

The app is built around a simple Task class and file handling in C++. Add a task and it goes on the list as pending. List all tasks and you see each one with its status, pending or done. Mark a task done when you finish it. Delete a task when you do not need it anymore. Nothing else. No categories, no tags, no priorities, no cloud.

I kept it small on purpose. A to-do list is not a project management platform. The moment it grows a login screen, it has failed at its job.

How to run it

g++ TodoCLI.cpp -o todo ./todo 

That is it. One file, one compile, no dependencies, no install step.

Why I still use it

I have built bigger things since. Dashboards, APIs, monitors. But this little tool is the one that taught me something useful: the best version of a tool is often the smallest one that still does the job. If a program does one thing and does it without getting in your way, you will keep using it. If it asks you to sign up first, you will not.

If you are learning C++ and you want a first project that is actually useful, a to-do CLI is a good place to start. File handling, a small class, a menu loop. Nothing fancy, and you end up with something you open every morning.

Repo: https://github.com/MASHHOOD2019/todo-cli