Note: IBudget is the development name, the application name is Stacks
A personal finance management application built with .NET 8 and Avalonia UI. Track expenses, manage income, set financial goals, and get insights into your spending habits.
Before you start, make sure you have these installed:
- .NET 8 SDK or later
- MongoDB Community Server (for database storage)
- Git (to clone the repository)
Optional but recommended:
- MongoDB Compass (GUI for viewing your data)
- MongoSH (MongoDB shell for command-line operations)
git clone https://github.com/zlo120/IBudget.git
cd IBudgetThe application supports both LiteDB and MongoDB. For most users, MongoDB is recommended.
- Install MongoDB Community Server from https://www.mongodb.com/try/download/community
- Install MongoDB Compass and MongoSH from https://www.mongodb.com/try/download/compass
Once MongoDB is running, the application will automatically create a database named IBudget with the necessary collections on first run. The main collection used is userDictionaries.
If you need to find your MongoDB connection string:
mongosh
use IBudget
db.getMongo()The simplest way to build the entire solution:
dotnet build IBudget.slnThis compiles all three projects in the solution:
IBudget.Core- Core business logic and modelsIBudget.Infrastructure- Database context and repositoriesIBudget.GUI- Avalonia-based user interface
For a release build:
dotnet build IBudget.sln -c ReleaseTo run the GUI application in development mode:
dotnet run --project IBudget.GUI/IBudget.GUI.csprojOr if you're using Visual Studio, just set IBudget.GUI as the startup project and hit F5.
If you're working in VS Code, there are predefined tasks available:
build- Builds the solutionpublish- Publishes the solution for distributionwatch- Runs the app with hot reload enabled
You can run these from the Command Palette (Ctrl+Shift+P) by selecting "Tasks: Run Task".
The solution follows a clean architecture approach:
- IBudget.Core - Domain models, interfaces, services, and business logic. No dependencies on external frameworks.
- IBudget.Infrastructure - Implementation of data access using MongoDB and LiteDB, repository patterns.
- IBudget.GUI - Avalonia UI application with MVVM pattern, views, and view models.
The application uses LiteDB by default for local storage. If you prefer MongoDB or need to customize database settings, you can modify the connection strings in the application's settings after first launch.
Database files are typically stored in:
C:\Users\{YourUsername}\AppData\Local\IBudget\IBudgetDB\
Build fails with missing dependencies
dotnet restore IBudget.sln
dotnet build IBudget.slnMongoDB connection issues
Make sure MongoDB service is running. On Windows, check Services for "MongoDB Server". On macOS/Linux, run:
sudo systemctl status mongodApplication won't start
Check that you have .NET 8 runtime installed:
dotnet --list-runtimesThe application uses:
- Avalonia 11.2 for cross-platform UI
- CommunityToolkit.Mvvm for MVVM implementation
- MongoDB.EntityFrameworkCore for database operations
- ClosedXML for spreadsheet generation
- CsvHelper for CSV import/export
When adding new features or fixing bugs, run the build task regularly to catch any compilation issues early.
See the LICENSE file for details.