Beginner tier

  • gentle

    CLI Quiz or Habit Tracker

    Build a small, menu-driven command-line program โ€” a quiz game or a habit tracker, your choice โ€” that validates input, saves its state to disk between runs, and is covered by your own pytest tests.

    Practices: control flow, functions, collections, input validation, file persistence, testing

  • moderate

    Expense Analyzer

    Build a command-line tool that reads a CSV of expenses and a JSON budget configuration, aggregates spending by category, flags categories over budget, and reports on it โ€” without crashing on a single malformed row.

    Practices: CSV and JSON parsing, pathlib, aggregation, reporting, configuration, error handling, testing

  • challenge

    Reusable Package and CLI

    Turn a working script into an installable package with a proper src layout, a pyproject.toml, an editable install in a virtual environment, a terminal command, and tests that run against the installed package rather than a loose file.

    Practices: modules and packages, packaging layout, virtual environments, documentation, testing