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`.
@@ -0,0 +1,47 @@
# Business Logic Model — Unit 04: API Shell & Integration
Dit document beschrijft de startup flow en de orkestratie logica van de shell.
## 1. Startup Orkestratie Flow
```mermaid
sequenceDiagram
participant Program as Program.cs
participant Orc as ModuleOrchestrator
participant Core as Core Services
participant Mod as Modules (IModule)
Program->>Orc: DiscoverModules()
Orc-->>Program: List<IModule>
Program->>Core: RegisterCoreServices(Identity, DB, JWT)
loop Per Module
Program->>Mod: RegisterServices(IServiceCollection)
end
Program->>Program: Build App
Program->>Program: UseExceptionHandler()
loop Per Module
Program->>Mod: UseModule(IApplicationBuilder)
end
Program->>Program: UseAuthentication/Authorization()
Program->>Program: MapControllers()
Program->>Program: Run()
```
## 2. API Versioning Logic
De versioning wordt toegepast via een globale `RoutePrefix` of door gebruik te maken van de `Microsoft.AspNetCore.Mvc.Versioning` library.
- **Base Path**: `/api/v1`
- **Fallback**: Verzoeken zonder versie-indicator in het pad worden standaard naar v1 gerouteerd.
## 3. Dynamische Swagger Groepering
1. Swagger scan de controllers van alle geladen assemblies.
2. Voor elke controller wordt gekeken naar de assembly waarin deze is gedefinieerd.
3. Indien de assembly toebehoort aan een module (bijv. `SlpModularCms.Modules.Availability`), wordt de module naam als 'Tag' toegevoegd aan alle endpoints van die controller.
4. Swagger UI toont de endpoints gegroepeerd onder deze tags.