1.1 KiB
1.1 KiB
GoodWood App Notes
Architecture
- Blazor Server (.NET 9), Clean Architecture: Domain → Application → Infrastructure → Web
- Fluxor (Redux): Store/{Feature}State/{Actions,Reducers,Effects,State}.cs pattern
- AutoMapper profiles in Application/Mapping/
- EF migrations:
dotnet ef migrations add [Name] --project src/GoodWood.Infrastructure --startup-project src/GoodWood.Web --context AppDbContext --output-dir Data/Migrations - Dual DbContext: AppDbContext (app schema), AppIdentityDbContext (auth schema)
Code-behind pattern
- Partial classes: Component.razor + Component.razor.cs
- [Inject] needs
using Microsoft.AspNetCore.Components;in .cs files (not auto-imported unlike .razor)
SEPA Export (added 2026-02-08)
- pain.008.003.02 XML generated by SepaXmlBuilder (System.Xml, no external lib)
- Download via JS:
window.downloadFilein wwwroot/js/fileDownload.js - SepaExport entity links CashBookEntries via nullable FK SepaExportId
- PaymentStatus enum on CashBookEntry: Open/DirectDebitCollected/Paid
- Person gets: Iban, Bic, SepaMandateReference, SepaMandateDate
- Club gets: BankIban, BankBic, SepaCreditorId