A command-line application for recording, viewing, and managing personal expenses in Python.
The project is currently in active development and will evolve into a modular and fully structured application.
The core CLI is functional.
Users can enter expenses and list them during the running session.
The application is intentionally simple at this stage, forming a foundation for future expansion.
Develop a reliable and extendable expense-tracking tool that begins as a basic CLI workflow and progresses toward a modular architecture with validation, persistent storage, and enhanced expense management features.
This project provides a clear and minimal command-line interface for adding and viewing expense entries.
The current implementation is contained in a single main script to maintain simplicity while laying the groundwork for upcoming modular components.
- Add new expense entries
- Display all recorded entries
- Structured and predictable CLI workflow
- Code formatting, linting, and import sorting using Ruff
- Pre-commit hooks for automatic code quality checks
Modular Architecture
cli.py— command parsing and user interactionmodels.py— Expense and Category structuresvalidation.py— centralized input validationstorage.py— JSON, CSV, or simple database persistence
Persistent Data Handling
- Save expense data between sessions
- Load and update stored records
- Implement full CRUD functionality
Enhanced CLI Features
- Edit and delete specific entries
- Filter by category, date, or amount
- Add summary views and basic analytics
Testing and Type Safety
- Introduce pytest test coverage
- Add type checking using mypy
This project uses a modern Python development setup with the following tools:
Main Development Dependencies
- Ruff — linting, formatting, and import sorting
- mypy — type checking
- pytest — test framework
- pre-commit — automated quality checks
These tools are installed inside the project’s .venv virtual environment and configured through:
pyproject.toml.pre-commit-config.yaml.vscode/settings.json
- Initial project structure created
- Virtual environment and development dependencies configured
- Pre-commit hooks enabled
- Baseline CLI application implemented
- README prepared and documented
- Next step: Begin redesigning the data model and modular structure (Phase 1.5)