A modern, feature-rich expense tracking application built with C# and WPF using the MVVM pattern.
- 💰 Track Expenses: Add, edit, and delete expenses with detailed information
- 📊 Categories: Organize expenses into predefined categories (Food, Transport, Shopping, etc.)
- 🔍 Search & Filter: Search expenses by description or category, filter by date range
- 📈 Summary Dashboard: View total expenses and monthly totals at a glance
- 💾 Local Database: All data stored securely in SQLite database
- 🎨 Modern UI: Clean, intuitive interface with Material Design-inspired elements
ExpenseTracker/
├── Models/ # Data models (Expense, Category, Budget)
├── ViewModels/ # MVVM ViewModels with business logic
├── Views/ # XAML views and windows
├── Services/ # Data access layer and database context
├── Helpers/ # Utility classes (ViewModelBase, RelayCommand, Converters)
├── App.xaml # Application entry point
└── MainWindow.xaml # Main application window
- Framework: .NET 8.0 (Windows)
- UI Framework: WPF (Windows Presentation Foundation)
- Pattern: MVVM (Model-View-ViewModel)
- Database: SQLite with Entity Framework Core
- ORM: Entity Framework Core 8.0
- .NET 8.0 SDK or later
- Visual Studio 2022 (recommended) or any .NET-compatible IDE
- Windows 10/11
Download and install the .NET 8.0 SDK from: https://dotnet.microsoft.com/download/dotnet/8.0
cd C:\Projects\expence-trackercd ExpenseTracker
dotnet restoredotnet builddotnet runOr open ExpenseTracker.csproj in Visual Studio and press F5 to run.
- Click the "➕ Add Expense" button
- Fill in the required fields:
- Amount: Enter the expense amount
- Category: Select from predefined categories
- Description: Optional description
- Date: Select the expense date
- Payment Method: Choose payment method (Cash, Credit Card, etc.)
- Click "💾 Save" to save the expense
- Select an expense from the list
- Click the "✏️ Edit" button
- Modify the fields as needed
- Click "💾 Save" to update
- Select an expense from the list
- Click the "🗑️ Delete" button
- Use the search box to find expenses by description or category
- Use the date pickers to filter expenses by date range
- Click "🔄 Refresh" to reload all data
The application uses SQLite for data storage. The database file is automatically created at:
C:\Users\[YourUsername]\AppData\Local\ExpenseTracker\expenses.db
- 🍔 Food & Dining
- 🚗 Transportation
- 🛍️ Shopping
- 🎮 Entertainment
- 💡 Bills & Utilities
- ⚕️ Healthcare
- 📚 Education
- 💰 Others
The application follows the MVVM (Model-View-ViewModel) pattern:
- Models: Data entities (Expense, Category, Budget)
- Views: XAML UI files (MainWindow, AddExpenseView)
- ViewModels: Business logic and data binding (MainViewModel, AddExpenseViewModel)
- DatabaseContext: Entity Framework DbContext for database operations
- IDataService/DataService: Repository pattern for data access
- Async/await for all database operations
- 📊 Charts and statistics visualization
- 📅 Recurring expenses
- 💰 Multiple accounts/wallets
- 🌍 Multi-currency support
- 💾 Backup and restore functionality
- 🌙 Dark mode theme
- 📤 Export to Excel/CSV
- 📱 Budget alerts and notifications
Feel free to fork this project and submit pull requests for any improvements!
This project is open source and available for personal and educational use.
For questions or support, please open an issue in the repository.