Initial commit with inital CMS

This commit is contained in:
2026-06-15 17:00:16 +02:00
commit 95d986790e
132 changed files with 7624 additions and 0 deletions
@@ -0,0 +1,30 @@
# Business Rules — Unit 04: API Shell & Integration
Dit document beschrijft de integratie-regels en de orkestratie van de modules.
## 1. Module Discovery (BR-SHELL-01)
- **Scanning**: De API Shell scant bij het opstarten naar alle geladen assemblies die voldoen aan het patroon `SlpModularCms.Modules.*`.
- **Interface**: Alleen klassen die `IModule` implementeren worden geregistreerd.
- **Validatie**: Indien een module niet voldoet aan de eisen (bijv. ontbrekende naam of versie), wordt dit gelogd als een fout en wordt de module niet geladen.
## 2. Dependency Injection & Pipeline (BR-SHELL-02)
- **Gecentraliseerde Registratie**: De `ModuleOrchestrator` roept `RegisterServices` aan op alle gevonden modules voordat de applicatie start.
- **Middleware Pipeline**: De `ModuleOrchestrator` roept `UseModule` aan om modules de kans te geven hun middleware te registreren in de HTTP pipeline.
- **Core First**: Core services (Identity, Logging) worden altijd geregistreerd vóórdat de modules aan de beurt zijn.
## 3. API Versioning & Routing (BR-SHELL-03)
- **Gecentraliseerde Prefix**: Alle API endpoints krijgen de prefix `/api/v1/`.
- **Afdwingen**: Dit wordt globaal geconfigureerd in de Shell zodat individuele modules hier geen rekening mee hoeven te houden in hun route attributen.
## 4. Swagger Documentatie (BR-SHELL-04)
- **Tagging**: De Shell groepeert endpoints automatisch per module op basis van de module naam die in de `IModule` interface is opgegeven.
- **Security**: Swagger wordt geconfigureerd om JWT Bearer tokens te ondersteunen voor het testen van beveiligde endpoints.
## 5. Cross-Module Communicatie (BR-SHELL-05)
- **Ontkoppeling**: Modules communiceren niet direct met elkaar via projectreferenties.
- **Interfaces**: Communicatie verloopt uitsluitend via interfaces die gedefinieerd zijn in `SlpModularCms.Core`.