A modern, user-friendly desktop application for managing personal finances, built with Avalonia UI and C#.
- Intuitive Dashboard: Get a quick overview of your financial status with total balance, income, and expenses at a glance
- Income Management: Track all your income sources with dates and categories
- Expense Tracking: Log and categorize expenses with detailed information
- Budget Planning: Create and monitor budgets for different spending categories
- Reminder System: Receive email notifications for upcoming expenses
- Modern UI: Clean, responsive interface with dark theme support
- Frontend: Avalonia UI (cross-platform .NET UI framework)
- Backend: C# / .NET
- Database: Microsoft SQL Server
- Email Notifications: SendGrid API integration
- .NET 6.0 SDK or later
- Microsoft SQL Server (2019 or 2022)
- Visual Studio 2022 or JetBrains Rider (recommended for development)
There are two ways to set up the database:
- Open SQL Server Management Studio
- Connect to your SQL Server instance
- Right-click on "Databases" and select "Restore Database"
- Choose "Device" and browse to select the backup file
- Alternatively, you can use the following T-SQL command:
Replace
RESTORE DATABASE PersonalBudgeting FROM DISK = "path/to/PersonalBudgeting.bak"
"path/to/PersonalBudgeting.bak"with the actual path to the backup file.
- Open SQL Server Management Studio
- Connect to your SQL Server instance
- Right-click on "Databases" and select "Attach"
- Click "Add" and browse to the location of the MDF file
- Select the "PersonalBudgeting.mdf" file
- Click "OK" to attach the database
-
Clone the repository or download the source code
git clone https://github.com/yourusername/personal-budgeting.git -
Open in Visual Studio:
- Launch Visual Studio 2022
- Select "Open a project or solution"
- Navigate to the solution file (.sln) in the project directory
- Click "Open"
-
Alternatively, build from command line:
dotnet build -
Run the application
dotnet run --project PersonalBudgeting
- Launch the application
- Create a new user account by clicking "Sign Up" on the welcome screen
- Log in with your new credentials
- Set up your initial budget categories via the Budget page
- Navigate to the Income section
- Click the "Add Income" button
- Enter source, amount, date, and category details
- Click "Save" to record the income
- Navigate to the Budget section
- Click "Create Budget" to add a new budget category
- Set a budget name / category and budget amount
- Monitor your spending progress through the visual indicators
- Navigate to the Expenses section
- Click "Add Expense" to record a new expense
- Choose a budget category / name , Enter expense name, required amount, spent amount , and date of the expense
- Set a reminder date to receive an email notification (Optionally)
- Click "Save" to record the expense
The application is organized into three main projects:
-
PersonalBudgeting/: Main application project (UI layer)
- Views/: UI components and XAML layouts
- Pages/: Individual application pages (Home, Budget, Expenses, etc.)
- ViewModels/: Data binding and presentation logic
- Converters/: Value converters for UI display
- Styles/: Application themes and style resources
- Assets/: Images and other static resources
- Model/: Local model references and service implementations
- Services/: Service classes including the reminder service
- Controllers/: Local controller references
- Views/: UI components and XAML layouts
-
Model/: Data access and domain layer
- Entities/: Domain model classes
- Repositories/: Data access components
- Interfaces/: Service and repository contracts
- Utilities/: Helper functions and extensions
- Handlers/: Event and request handlers
- ApplicationDbContext.cs: Entity Framework database context
-
Controller/: Business logic layer
- Validators/: Input validation logic
- UserController.cs: User management operations
- BudgetController.cs: Budget management operations
- ExpenseController.cs: Expense tracking operations
- IncomeController.cs: Income tracking operations
dotnet publish -c Release
This project is licensed under the MIT License - see the LICENSE file for details.
- Avalonia UI for the cross-platform UI framework
- SendGrid for the email notification service
- All contributors who have helped improve this application
After setting up the database, you'll need to configure the connection string:
- Open
Model/ApplicationDbContext.csto verify the connection string name - Check and update the connection string in your application settings if needed
The application includes an email reminder system for expenses:
- Setting Reminders: When creating or editing an expense, you can set a reminder date
- Email Notifications: The system will send an email notification on the specified date
- Customization: Emails include:
- Personalized greeting with your name
- Expense details (name, category, amounts)
- Reminder date
- Application branding
The email service uses SendGrid API to deliver reliable, transactional emails. This helps ensure you never miss an important payment or expense deadline.
To set up the email reminder system:
- Configure your SendGrid API account at sendgrid.com
- Create an API key with appropriate permissions
- Update the reminder service with your API key and sender email
Example configuration:
// In UserController.cs
private const string API_KEY = "your-sendgrid-api-key";
private const string SENDER_EMAIL = "your-verified-sender@example.com";
private const string SENDER_NAME = "Personal Budget Manager";






