{"id":49884414,"url":"https://github.com/zephir-x/finance-tracker","last_synced_at":"2026-05-15T17:11:21.451Z","repository":{"id":338333035,"uuid":"1157359664","full_name":"zephir-x/finance-tracker","owner":"zephir-x","description":"Desktop finance management app.","archived":false,"fork":false,"pushed_at":"2026-03-02T12:40:47.000Z","size":13738,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-02T16:35:48.118Z","etag":null,"topics":["csharp","desktop-app","dotnet","ef-core","mvvm","sqlite","wpf","xaml"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zephir-x.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-13T18:19:49.000Z","updated_at":"2026-03-02T12:40:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zephir-x/finance-tracker","commit_stats":null,"previous_names":["zorquan04/finance-tracker","zephir-x/finance-tracker"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/zephir-x/finance-tracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zephir-x%2Ffinance-tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zephir-x%2Ffinance-tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zephir-x%2Ffinance-tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zephir-x%2Ffinance-tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zephir-x","download_url":"https://codeload.github.com/zephir-x/finance-tracker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zephir-x%2Ffinance-tracker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33073060,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","desktop-app","dotnet","ef-core","mvvm","sqlite","wpf","xaml"],"created_at":"2026-05-15T17:11:20.566Z","updated_at":"2026-05-15T17:11:21.445Z","avatar_url":"https://github.com/zephir-x.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"![.NET](https://img.shields.io/badge/.NET-8-blue)\n![WPF](https://img.shields.io/badge/WPF-Desktop-purple)\n![SQLite](https://img.shields.io/badge/SQLite-Database-green)\n![Architecture](https://img.shields.io/badge/Pattern-MVVM-orange)\n\n# Finance Tracker Application\n\nA 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.\n\n---\n\n## Table of Contents\n\n1. [Overview](#overview) \n2. [Project Highlights](#project-highlights)\n3. [Features](#features) \n4. [Architecture](#architecture)  \n5. [Technologies](#technologies)  \n6. [Getting Started](#getting-started)\n7. [Download](#download)\n8. [Usage](#usage)  \n9. [Screenshots](#screenshots)  \n10. [Notes](#notes)\n\n---\n\n## Overview\n\n**Finance Tracker** helps users monitor their expenses efficiently. The application follows the MVVM pattern and focuses on clean architecture, responsiveness, and usability.\n\nThe main functionalities include:\n\n- Adding and editing expenses\n- Filtering and sorting\n- Monthly budget tracking with notifications\n- Dynamic chart visualization\n- CSV import/export\n- Theme and language customization\n\n---\n\n## Project Highlights\n\n- Clean and maintainable **MVVM architecture**\n- Proper separation of concerns (ViewModels do not access EF Core directly)\n- Dependency Injection configured at application startup\n- Centralized error handling strategy\n- Persistent user settings (theme, language, budget)\n- Scalable service layer abstraction\n- Strong UI/UX focus with responsive feedback and visual indicators\n- Designed with real-world desktop application standards in mind\n\n---\n\n## Features\n\n| Module                  | Description                                                                 |\n|-------------------------|-----------------------------------------------------------------------------|\n| **Expenses Management**  | Add, edit, delete expenses with validation and dynamic total calculations. |\n| **Filtering \u0026 Sorting**  | Filter expenses by category, month, or date range. Sort by name, amount, category, or date. |\n| **Database**             | Persistent storage using **SQLite** with EF Core. Automatic migrations and robust error handling. |\n| **Charts**               | Animated charts by category and trends with tooltips, max/average indicators, and color-coded categories. |\n| **Budget**               | Monthly budget tracking with visual warnings when limits are exceeded. Tooltip shows remaining amount. |\n| **CSV Export/Import**    | Load and save expense data with proper error handling for invalid files. |\n| **Themes \u0026 Localization**| Switch between light/dark themes and English/Polish languages. Settings persist between sessions. |\n| **UI Polishing**         | Rounded corners, hover/fade effects, color accents, tooltips, icons, and consistent font styling. |\n\n---\n\n## Architecture\n\nThe application follows the **MVVM pattern**:\n\n- **Views** � XAML UI layer responsible for user interaction  \n- **ViewModels** � Commands, state management, and presentation logic  \n- **Models** � Database entities and business data  \n\nCore components:\n\n- **BaseViewModel** � Implements `INotifyPropertyChanged`  \n- **RelayCommand** � Encapsulates `ICommand`  \n- **Service Layer** � Handles data access, messaging, CSV, charts, and budgets  \n- **Dependency Injection** � Configured in `App.xaml.cs`\n\n---\n\n## Technologies\n\n- **.NET 8**  \n- **Visual Studio 2022**  \n- **WPF / XAML**  \n- **EF Core + SQLite**  \n- **LiveCharts** (for animated charts)  \n- **MVVM Pattern**  \n- **Dependency Injection**  \n- **Localization / Themes**  \n\n---\n\n## Getting Started\n\n**Prerequisites:**\n\n- .NET 8 SDK\n\n- Visual Studio 2022 (recommended)\n\n- Windows OS (WPF requirement)\n\n**Clone the repository:**\n```\ngit clone https://github.com/Zorquan04/finance-tracker.git\ncd finance-tracker/FinanceTracker\n```\n**Database Setup:**\n\n- The application uses SQLite + EF Core.\n\n- On first run, the database is automatically created if it does not exist.\n\n- If migrations need to be applied manually:\n\n```\ndotnet ef database update\n```\n\n**Run the application:**\n\n```\ndotnet run\n```\n\n---\n\n## Download\n\nYou can download the latest stable version from the **Releases** section:\n\n https://github.com/Zorquan04/finance-tracker/releases\n\n---\n\n## Usage\n\n1. **Expenses**: Add new expenses using the form. Use **TwoWay binding** to update UI instantly.  \n2. **Filters**: Toggle filters to refine visible expenses by category or date range.  \n3. **Sorting**: Sort the table dynamically by clicking column headers or using menu commands.  \n4. **Charts**: Switch between category-based column charts and trend line charts.  \n5. **Budget**: Set a monthly limit and get visual notifications when exceeded.  \n6. **CSV**: Import/export expense data. The application handles invalid formats gracefully.  \n7. **Themes \u0026 Language**: Change theme or language via menu, requiring a restart for persistence.  \n\n**Pro Tip:** Editing an expense changes the **Add** button to **Save**, and provides a **Cancel** option to discard changes.\n\n---\n\n## Screenshots\n\n**Main Menu:**  \n![Main Menu](assets/menu.png)\n\n---\n\n**Adding expense:**  \n![Adding Expense](assets/add.png)\n\n---\n\n**Filtering:**  \n![Filtering](assets/filtering.png)\n\n---\n\n**Sorting options:**  \n![Sorting](assets/sorting_editing.png)\n\n---\n\n**Column chart:**  \n![Column Chart](assets/column.png)\n\n---\n\n**Trend chart:**  \n![Trend Chart](assets/trend.png)\n\n---\n\n**Adjusting budget:**  \n![Budget](assets/budget.png)\n\n---\n\n**Menu bar options:**  \n![Menu Bar](assets/file_menu.png)\n\n---\n\n**Modifying theme:**  \n![Theme](assets/light_theme.png)\n\n---\n\n**Modifying language:**  \n![Language](assets/polish_language.png)\n\n---\n\n## Notes\n\n- Database file is created automatically in the application directory\n- Designed with scalability in mind for future feature expansion\n\n---\n\n**Author:** Kacper Gumulak - [zephir-x](https://github.com/zephir-x)  \n**GitHub:** [Finance Tracker Repository](https://github.com/zephir-x/finance-tracker)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzephir-x%2Ffinance-tracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzephir-x%2Ffinance-tracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzephir-x%2Ffinance-tracker/lists"}