Projects
Small, complete projects that turn lessons into real practice.
-
Number Guessing Game
Build a complete, replayable guessing game and learn the “keep asking until the input is valid” pattern that powers every interactive program.
-
To-Do List CLI
Build a menu-driven to-do app that remembers your tasks between runs. Your first program that saves and loads its own data.
-
CSV Cleaner
Turn a messy spreadsheet export into a tidy one. A real command-line tool that reads a CSV, cleans it, and writes the result to a new file.
-
Search and Summarize a Log File
Turn a 9,000-line log into a three-line summary: scan it line by line, keep only the errors, count them by type, and write a report — the everyday shape of an ops or security script.
-
Safely Rename Files in Bulk
Rename a folder full of messily-named files to a clean, numbered scheme — with a dry-run that shows exactly what will happen before a single file is touched.
-
Compare Two CSV Reports
Find what changed between two spreadsheet exports. Match records by ID, detect additions, removals, and changed fields, then generate a concise summary and detailed CSV reports.
-
Collect API Data Into a Database
Turn a one-off API call into a tracker that remembers. Flatten a nested JSON response into clean records, give them a shape with a dataclass, store them safely in SQLite without ever duplicating a row, and query the history back out.
-
Build a Utility Toolkit You Will Reuse
Stop rewriting the same three helpers. Build a small helpers module with a timing decorator, a retry that survives flaky calls, a cache that skips repeated work, and a context manager that always cleans up, then reuse it in every project after this one.
-
From Messy Export to One-Page Report
Take a real, untidy sales export and turn it into a report someone would actually read: clean the columns, group the numbers, join a lookup table, chart the result, and write a conclusion that admits what the data cannot say.
-
Package and Ship a Command-Line Tool
Take a script that only runs in its own folder and turn it into a real tool: the src layout, a pyproject.toml, an entry point that makes it a terminal command, tests, a CI workflow, and a wheel you can hand to someone.