2026-03-02 16:00:18 +00:00
2026-03-01 21:19:34 +00:00
WIP
2026-03-02 16:00:18 +00:00
2026-03-01 19:00:23 +00:00
2026-03-01 18:17:42 +00:00
2026-03-01 18:17:40 +00:00
2026-03-01 19:00:23 +00:00
WIP
2026-03-01 21:47:44 +00:00
WIP
2026-03-01 21:47:44 +00:00

💰 Budgeteer

Build and Test Docker Publish

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.db inside the container. Always mount a volume to /app/data so 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.

S
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%