claude-meta/memory/projects/GoodWoodApp/MEMORY.md

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.downloadFile in 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