October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk2 min

I Built a Task Tracker as My First Real Python Project

Leandros Georgiou’s first substantial Python project was a terminal to-do list with JSON persistence, a simple dictionary-based task model, and a menu designed to recover from invalid input.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leandros Georgiou’s first substantial Python project was a terminal-based to-do list: it lets a user view, add, delete, and complete tasks, then saves the list in a JSON file so it can be opened again later. His account is a useful look at the decisions and debugging behind a small beginner project—not a benchmark or a claim that every first Python project should use the same design.

What the task tracker does

Georgiou describes the app as a task tracker that runs in the terminal, rather than a web or mobile service. Its menu offers five choices: view tasks, add one, delete one, mark one complete, or quit. The task list is saved to a JSON file, allowing the program to retain it between runs.

In the implementation described in the post, a TaskList class holds a dictionary. Each task name is a key, and its value indicates whether the task is complete: an empty list represents an incomplete task, while ["X"] represents a completed one. This is a deliberately small representation for a simple app.

How the menu handles input

The program repeatedly asks for a numeric menu choice, converts the response to an integer, and checks whether that number falls between 1 and 5. Georgiou says an early version could crash or appear to do nothing when someone typed a letter instead of a number. He also found an approach with separate loops confusing.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

His eventual approach uses one loop to prompt for input, validate it, and perform an action only after the choice is valid. He describes this as the change that resolved the behavior he was debugging. It is a personal lesson from this program, not a rule that one loop is always the right design.

The account also describes two specific error cases:

  • try/except ValueError handles a response that cannot be converted to an integer.
  • try/except KeyError handles an attempt to delete a task that is not in the dictionary.

These checks let the app respond to expected mistakes instead of stopping at the first invalid choice or missing task.

Why the data model stays simple

A dictionary keyed by task name keeps the current design compact. Georgiou suggests that separate Task and TaskList classes could be a future improvement if tasks need more information, such as due dates or priorities. He also says the extra structure is unnecessary for a small app as it stands. The post does not compare or benchmark the two designs.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What the project shows about a first real Python project

The account’s practical emphasis is less on adding features than on making the basic interaction behave predictably: save the data, offer the core task actions, and recover when input does not match what the menu expects. For someone choosing a first substantial project, this example shows how a modest terminal program can bring together a class, a dictionary, file persistence, a menu loop, and exception handling without requiring a web interface.

Georgiou’s original DEV Community post is available at “I built a task tracker as my first real Python project”.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.