f220a034b1a758b0bae81a52517e98466938680c
💰 Budgeteer
A personal finance dashboard built with Blazor Server (.NET 10).
Features
- Multi-account support — current accounts, savings, credit cards, each with its own currency and colour
- Transaction tracking — income & expenses with date, category, and account assignment
- Recurring transactions — daily, weekly, monthly, or yearly recurrence with automatic materialisation up to one year ahead
- Dashboard — balance trend chart (Chart.js), recent & upcoming transaction lists, inline balance editing, and configurable time window
- Categories — emoji-icon categories with sensible defaults and full CRUD
- Authentication — ASP.NET Identity with registration, login, password change, and account deletion
- Sortable transaction table — click column headers to reorder by date, description, or amount
- Responsive UI — Bootstrap 5, mobile-friendly layout with collapsible sidebar
Tech Stack
| Layer | Technology |
|---|---|
| Framework | .NET 10 / Blazor Server (InteractiveServer) |
| Database | SQLite via EF Core |
| Auth | ASP.NET Core Identity |
| Charts | Chart.js (CDN) with JS interop |
| CSS | Bootstrap 5, scoped CSS |
Getting Started
Prerequisites
Run Locally
cd BudgetApp
dotnet run
The app will be available at https://localhost:5001 (or the port shown in the console). A budgetapp.db SQLite file is created automatically on first run.
Run with Docker
# Build
docker build -t budgeteer .
# Run (persists database in a named volume)
docker run -d -p 8080:8080 -v budgeteer-data:/app/data --name budgeteer budgeteer
Note: The SQLite database is stored at
/app/data/budgetapp.dbinside the container. Always mount a volume to/app/dataso your data survives image updates and container replacements.
The app will be available at http://localhost:8080.
Project Structure
BudgetApp/
├── Components/
│ ├── Layout/ # MainLayout, AuthLayout, NavMenu
│ └── Pages/ # Home, Accounts, Transactions, Categories, Settings, Login, Register
├── Data/ # EF Core entities, DbContext, Identity user
├── Migrations/ # EF Core migrations (SQLite)
├── Services/ # AccountService, TransactionService, CategoryService, DashboardService
└── wwwroot/
├── app.css # Global styles
└── js/
└── chart-interop.js # Chart.js interop (balance trend, crosshair, highlight)
Configuration
Default connection string in appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Data Source=budgetapp.db"
}
}
Override at runtime via environment variable:
export ConnectionStrings__DefaultConnection="Data Source=/path/to/budgeteer.db"
Licence
This project is provided as-is for personal use.
Description
A simple budgeting and forecasting app built on Blazor (SSR) and Entity Framework
Readme
1 MiB
0 Stars
1 Watchers
0 Forks
Languages
C#
58.1%
HTML
31.4%
CSS
6%
JavaScript
3.9%
Dockerfile
0.6%