Initial commit with inital CMS
This commit is contained in:
+30
@@ -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`.
|
||||
Reference in New Issue
Block a user