Skip to content

zephir-x/finance-tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

.NET WPF SQLite Architecture

Finance Tracker Application

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.


Table of Contents

  1. Overview
  2. Project Highlights
  3. Features
  4. Architecture
  5. Technologies
  6. Getting Started
  7. Download
  8. Usage
  9. Screenshots
  10. Notes

Overview

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

Project Highlights

  • 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

Features

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.

Architecture

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

Technologies

  • .NET 8
  • Visual Studio 2022
  • WPF / XAML
  • EF Core + SQLite
  • LiveCharts (for animated charts)
  • MVVM Pattern
  • Dependency Injection
  • Localization / Themes

Getting Started

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

Download

You can download the latest stable version from the Releases section:

https://github.com/Zorquan04/finance-tracker/releases


Usage

  1. Expenses: Add new expenses using the form. Use TwoWay binding to update UI instantly.
  2. Filters: Toggle filters to refine visible expenses by category or date range.
  3. Sorting: Sort the table dynamically by clicking column headers or using menu commands.
  4. Charts: Switch between category-based column charts and trend line charts.
  5. Budget: Set a monthly limit and get visual notifications when exceeded.
  6. CSV: Import/export expense data. The application handles invalid formats gracefully.
  7. 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.


Screenshots

Main Menu:
Main Menu


Adding expense:
Adding Expense


Filtering:
Filtering


Sorting options:
Sorting


Column chart:
Column Chart


Trend chart:
Trend Chart


Adjusting budget:
Budget


Menu bar options:
Menu Bar


Modifying theme:
Theme


Modifying language:
Language


Notes

  • 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

About

Desktop finance management app.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages