Update README and help pages
This commit is contained in:
1 parent
79cd667f7e
commit
38067df8c3
4 files changed
+86
-8
No files matched your search
@@ -5,16 +5,25 @@
|
||||
|
||||
A personal finance dashboard built with Blazor Server (.NET 10).
|
||||
|
||||
> **Status:** beta — see the in-app badge.
|
||||
|
||||
## 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
|
||||
- **Dashboard** — balance trend chart (Chart.js), recent & upcoming transaction lists, account filter toggles, inline balance editing, and configurable time window
|
||||
- **Reports** — doughnut charts for expenses and income by category, monthly income vs expenses bar chart, and a category summary table with filterable date range and account selection
|
||||
- **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
|
||||
- **Transactions table** — sortable columns, search, pagination, per-account filtering, time-window presets, bulk selection & delete, and responsive column hiding on mobile
|
||||
- **Authentication** — ASP.NET Identity with registration, login, password change, account deletion, and 5-attempt lockout
|
||||
- **SSO providers** — optional Google, Microsoft, and GitHub sign-in (configured via `appsettings.json`)
|
||||
- **Settings** — change password, reset all data (with confirmation), delete account
|
||||
- **Toast notifications** — inline validation feedback via a toast system
|
||||
- **Help & About pages** — in-app guides, tips, and project info
|
||||
- **Responsive UI** — Bootstrap 5, mobile-friendly layout with collapsible sidebar, responsive table columns, and scoped CSS
|
||||
- **CI/CD** — GitHub Actions for build/test and Docker Hub publishing
|
||||
- **Docker** — multi-stage Dockerfile with volume-mounted SQLite, OCI image labels, and automatic security patching
|
||||
|
||||
## Tech Stack
|
||||
|
||||
@@ -22,9 +31,12 @@ A personal finance dashboard built with Blazor Server (.NET 10).
|
||||
|---|---|
|
||||
| Framework | .NET 10 / Blazor Server (InteractiveServer) |
|
||||
| Database | SQLite via EF Core |
|
||||
| Auth | ASP.NET Core Identity |
|
||||
| Auth | ASP.NET Core Identity + optional Google / Microsoft / GitHub SSO |
|
||||
| Charts | Chart.js (CDN) with JS interop |
|
||||
| CSS | Bootstrap 5, scoped CSS |
|
||||
| Tests | xUnit |
|
||||
| CI/CD | GitHub Actions |
|
||||
| Container | Docker (multi-stage build) |
|
||||
|
||||
## Getting Started
|
||||
|
||||
@@ -41,6 +53,12 @@ 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 Tests
|
||||
|
||||
```bash
|
||||
dotnet test
|
||||
```
|
||||
|
||||
### Run with Docker
|
||||
|
||||
```bash
|
||||
@@ -62,14 +80,24 @@ The app will be available at `http://localhost:8080`.
|
||||
BudgetApp/
|
||||
├── Components/
|
||||
│ ├── Layout/ # MainLayout, AuthLayout, NavMenu
|
||||
│ └── Pages/ # Home, Accounts, Transactions, Categories, Settings, Login, Register
|
||||
│ ├── Pages/ # Home, Accounts, Transactions, Categories,
|
||||
│ │ # Reports, Settings, Help, About, Login, Register
|
||||
│ ├── ToastContainer.razor
|
||||
│ └── ToastValidator.razor
|
||||
├── Data/ # EF Core entities, DbContext, Identity user
|
||||
├── Migrations/ # EF Core migrations (SQLite)
|
||||
├── Services/ # AccountService, TransactionService, CategoryService, DashboardService
|
||||
├── Services/ # AccountService, TransactionService, CategoryService,
|
||||
│ # DashboardService, ToastService, AppState
|
||||
└── wwwroot/
|
||||
├── app.css # Global styles
|
||||
└── js/
|
||||
└── chart-interop.js # Chart.js interop (balance trend, crosshair, highlight)
|
||||
└── chart-interop.js # Chart.js interop (line, doughnut, bar charts)
|
||||
|
||||
BudgetApp.Tests/
|
||||
├── Helpers/ # TestDbContextFactory
|
||||
├── Models/ # AccountModelTests
|
||||
└── Services/ # AccountService, TransactionService, CategoryService,
|
||||
# DashboardService tests
|
||||
```
|
||||
|
||||
## Configuration
|
||||
@@ -90,6 +118,29 @@ Override at runtime via environment variable:
|
||||
export ConnectionStrings__DefaultConnection="Data Source=/path/to/budgeteer.db"
|
||||
```
|
||||
|
||||
### SSO Providers (optional)
|
||||
|
||||
Add client credentials to `appsettings.json` (or via environment / user-secrets). Each provider is only registered when both `ClientId` and `ClientSecret` are non-empty.
|
||||
|
||||
```json
|
||||
{
|
||||
"Authentication": {
|
||||
"Google": {
|
||||
"ClientId": "",
|
||||
"ClientSecret": ""
|
||||
},
|
||||
"Microsoft": {
|
||||
"ClientId": "",
|
||||
"ClientSecret": ""
|
||||
},
|
||||
"GitHub": {
|
||||
"ClientId": "",
|
||||
"ClientSecret": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Licence
|
||||
|
||||
This project is provided as-is for personal use.
|
||||
Reference in new issue
Block a user