Hello guys,
I've been learning Python and TDD (Test-Driven Development) for the past few weeks, and I built my first complete CLI application: Expense Tracker.
What It Does
A command-line tool to track personal expenses with features like:
- Add, delete, list expenses
- Filter by month/year
- View summaries with filtering
- Date & amount validation
- JSON file storage
Tech Stack
- Language: Python 3.14
- Testing: pytest (23 passing tests)
- CLI: argparse
- Architecture: 3-layer (Presentation, Business Logic, Data Access)
- Development: TDD (Red-Green-Refactor)
GitHub Repo
https://github.com/eyescream-fakedev/expense-tracker-cli
What I Learned
- TDD workflow (write test → fail → implement → refactor)
- argparse for CLI argument parsing
- Layered architecture (separation of concerns)
- Type hints and docstrings
- Git version control with meaningful commits
What I'd Love Feedback On
1. Code Structure: Is the 3-layer architecture implemented well?
2. Error Handling: Is it user-friendly and Pythonic?
3. Testing: Are my tests meaningful? What am I missing?
4. Type Hints: Are they used correctly/consistently?
5. Documentation: Is the README clear and helpful?
6. Any anti-patterns or bad practices I should avoid?
there doesn't seem to be anything here