Add project files.
This commit is contained in:
1 parent
fd9f318d6a
commit
0ce077ec11
98 files changed
+65707
No files matched your search
@@ -0,0 +1,89 @@
|
||||
# 💰 Budgeteer
|
||||
|
||||
A personal finance dashboard built with Blazor Server (.NET 10). Track accounts, record transactions, manage categories, and visualise your balance trend over time — all from a single self-hosted app.
|
||||
|
||||
## 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
|
||||
|
||||
- [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) (preview)
|
||||
|
||||
### Run Locally
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
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`:
|
||||
|
||||
```json
|
||||
{
|
||||
"ConnectionStrings": {
|
||||
"DefaultConnection": "Data Source=budgetapp.db"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Override at runtime via environment variable:
|
||||
|
||||
```bash
|
||||
export ConnectionStrings__DefaultConnection="Data Source=/path/to/budgeteer.db"
|
||||
```
|
||||
|
||||
## Licence
|
||||
|
||||
This project is provided as-is for personal use.
|
||||
Reference in new issue
Block a user