A command-line application built with .NET 9 to help you efficiently manage your personal expenses. Track, categorize, summarize, and export your expenses from your terminal.
💡 Based on: roadmap.sh project - Expense Tracker
- .NET 9 SDK or higher
✅ Expense Management – Add, update, and delete expenses from the terminal.
✅ Categorization – Organize expenses by categories (food, utilities, transport, etc.).
✅ Summaries – Get summaries by total, category, and month.
✅ Filtering – View expenses by date and category filters.
✅ Monthly Budget Tracking – Set a monthly budget and get alerts if exceeded.
✅ CSV Export – Export your expenses to CSV for external use.
✅ User-Friendly CLI – Intuitive command structure and prompts.
✅ Persistent Storage – Your data is saved automatically between sessions.
git clone https://github.com/hectorrosario22/ExpenseTracker.git
cd ExpenseTracker
dotnet buildRun the application with:
dotnet run -- <command> [arguments]| Command | Description |
|---|---|
add |
Add a new expense |
update |
Update an existing expense |
delete |
Delete an expense |
list |
List filtered (or all) expenses |
summary |
Show total and category-based summaries |
csv |
Export filtered (or all) expenses to CSV |
budget |
Set or update the monthly budget |
help |
Show command help |
dotnet run -- add --description "Lunch" --amount 20 --category "food" --category "essential"
dotnet run -- update --id 1 --description "Groceries" --amount 45 --category "food"
dotnet run -- delete --id 1
dotnet run -- list --month 5 --category "utilities"
dotnet run -- summary --month 5
dotnet run -- csv --month 5
dotnet run -- budget --monthly-expenses 1500- Command-line application development using Cocona for simplified CLI command parsing and routing
- Separation of responsibilities through clear organization of Services, Models, Parameters, and Interfaces, facilitating code readability and maintenance
- Local file-based persistence by storing and managing expense data in a JSON file
- Data filtering and formatting logic for generating summaries and exporting results to CSV
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.
MIT