A modern WPF desktop application for personal and family budget management, built using MVP architecture and powered by a standalone Budget Core Library.
This project includes a complete CI/CD pipeline that automatically builds and packages the app into a distributable installer.
- SQLite database storage
- Category management (Income / Expense / Investment / Debt / Savings)
- Transaction CRUD operations
- Aggregated reporting: monthly reports, category summaries, time-range filtering
- Decimal precision for financial calculations
- Clean separation of concerns via MVP
- Fully testable business logic layer
- Built using MVP pattern (View + Presenter + Core API)
- Modern and clean interface
- Charts for expense/income visualization
- Export data to Excel
- Create or load user databases
- Smooth user experience and fast performance
HomeBudget_WPF/
├── Views/ # XAML views (UI)
├── Presenter/ # Presenter classes (UI logic)
├── Interfaces/ # IView interfaces for MVP
├── Models/ # View models
├── dist/ # Auto-generated packaged builds
└── ...
Budget.Core/ # Separate Core API library (DLL)
├── Models/ # Category, Transaction, BudgetItem, etc.
├── Services/ # CategoryService, TransactionService...
├── Utils/ # Helpers & validation
└── HomeBudget.cs # Main facade class
┌──────────────┐
│ View │ (WPF XAML)
└──────┬───────┘
│
▼
┌──────────────┐
│ Presenter │ (UI logic)
└──────┬───────┘
│
▼
┌──────────────┐
│ Model │ (Budget Core API)
└──────────────┘
- View → Displays UI only
- Presenter → Handles user interactions and calls the API
- Model (Core) → Pure business logic and database operations
This project includes a GitHub Actions workflow that:
- Builds the WPF project
- Produces a distributable .exe / installer
- Uploads artifacts to GitHub Releases automatically
Workflow features:
- Windows build agent
- .NET restore + build
- Packaging via
dotnet publish - Artifact upload for each commit/tag
Your repository will automatically generate an installable desktop app on each push to main.
Requirements:
- .NET 6+ / .NET Framework
- Visual Studio 2022
- SQLite
Steps:
git clone https://github.com/Linyue-dev/HomeBudget_WPF.git
# Open in Visual Studio
# Restore NuGet packages
# Build solution
# Run HomeBudget_WPF.csprojvar budget = new HomeBudget("mybudget.db");
budget.LoadDatabase();
// Add transaction
budget.transactions.Add(DateTime.Now, categoryId, 50.00m, "Grocery shopping");
// Query monthly data
var report = budget.GetBudgetItemsByMonth(
DateTime.Now.AddMonths(-1),
DateTime.Now,
false,
0
);- Dark mode UI
- Cloud sync
- Import data from CSV/Excel
- Mobile version (MAUI)
- Web dashboard (Blazor)
This project is released under the GNU General Public License (GPL).



