A modern desktop application for managing personal expenses, built with .NET 8, WPF, and MVVM pattern. The application provides a full-featured experience including expense management, charts, budgets, CSV import/export, and customizable themes.
- Overview
- Project Highlights
- Features
- Architecture
- Technologies
- Getting Started
- Download
- Usage
- Screenshots
- Notes
Finance Tracker helps users monitor their expenses efficiently. The application follows the MVVM pattern and focuses on clean architecture, responsiveness, and usability.
The main functionalities include:
- Adding and editing expenses
- Filtering and sorting
- Monthly budget tracking with notifications
- Dynamic chart visualization
- CSV import/export
- Theme and language customization
- Clean and maintainable MVVM architecture
- Proper separation of concerns (ViewModels do not access EF Core directly)
- Dependency Injection configured at application startup
- Centralized error handling strategy
- Persistent user settings (theme, language, budget)
- Scalable service layer abstraction
- Strong UI/UX focus with responsive feedback and visual indicators
- Designed with real-world desktop application standards in mind
| Module | Description |
|---|---|
| Expenses Management | Add, edit, delete expenses with validation and dynamic total calculations. |
| Filtering & Sorting | Filter expenses by category, month, or date range. Sort by name, amount, category, or date. |
| Database | Persistent storage using SQLite with EF Core. Automatic migrations and robust error handling. |
| Charts | Animated charts by category and trends with tooltips, max/average indicators, and color-coded categories. |
| Budget | Monthly budget tracking with visual warnings when limits are exceeded. Tooltip shows remaining amount. |
| CSV Export/Import | Load and save expense data with proper error handling for invalid files. |
| Themes & Localization | Switch between light/dark themes and English/Polish languages. Settings persist between sessions. |
| UI Polishing | Rounded corners, hover/fade effects, color accents, tooltips, icons, and consistent font styling. |
The application follows the MVVM pattern:
- Views – XAML UI layer responsible for user interaction
- ViewModels – Commands, state management, and presentation logic
- Models – Database entities and business data
Core components:
- BaseViewModel – Implements
INotifyPropertyChanged - RelayCommand – Encapsulates
ICommand - Service Layer – Handles data access, messaging, CSV, charts, and budgets
- Dependency Injection – Configured in
App.xaml.cs
- .NET 8
- Visual Studio 2022
- WPF / XAML
- EF Core + SQLite
- LiveCharts (for animated charts)
- MVVM Pattern
- Dependency Injection
- Localization / Themes
Prerequisites:
-
.NET 8 SDK
-
Visual Studio 2022 (recommended)
-
Windows OS (WPF requirement)
Clone the repository:
git clone https://github.com/Zorquan04/finance-tracker.git
cd finance-tracker/FinanceTracker
Database Setup:
-
The application uses SQLite + EF Core.
-
On first run, the database is automatically created if it does not exist.
-
If migrations need to be applied manually:
dotnet ef database update
Run the application:
dotnet run
You can download the latest stable version from the Releases section:
https://github.com/Zorquan04/finance-tracker/releases
- Expenses: Add new expenses using the form. Use TwoWay binding to update UI instantly.
- Filters: Toggle filters to refine visible expenses by category or date range.
- Sorting: Sort the table dynamically by clicking column headers or using menu commands.
- Charts: Switch between category-based column charts and trend line charts.
- Budget: Set a monthly limit and get visual notifications when exceeded.
- CSV: Import/export expense data. The application handles invalid formats gracefully.
- Themes & Language: Change theme or language via menu, requiring a restart for persistence.
Pro Tip: Editing an expense changes the Add button to Save, and provides a Cancel option to discard changes.
- Database file is created automatically in the application directory
- Designed with scalability in mind for future feature expansion
Author: Kacper Gumulak - zephir-x
GitHub: Finance Tracker Repository