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,57 @@
# Application Design — SlpModularCms.Api
Dit document consolideert het volledige applicatie-ontwerp voor de modulaire CMS API.
## 1. Architectuur Overzicht
De applicatie volgt een modulaire Clean Architecture structuur waarbij het **Core Framework** de centrale spil is. Modules zijn onafhankelijke projecten (.csproj) of DLL's die via een hybride laad-strategie worden geïntegreerd.
- **Kleurgecodeerd Diagram**:
```mermaid
graph LR
subgraph "Core Phase"
Core[Core Framework]
ID[Identity Subsysteem]
end
subgraph "Module Phase"
Avail[Availability Module]
Other[External Modules]
end
Shell[API Shell]
Shell --> Core
Shell --> Avail
Shell -.-> Other
Avail --> Core
Other -.-> Core
style Core fill:#BBDEFB,stroke:#1565C0,color:#000
style ID fill:#E3F2FD,stroke:#1565C0,color:#000
style Shell fill:#C8E6C9,stroke:#2E7D32,color:#000
style Avail fill:#FFF59D,stroke:#F57F17,color:#000
```
## 2. Belangrijkste Componenten
Zie de gedetailleerde beschrijvingen in [components.md](./components.md).
- **Core**: Gedeelde logica, Identity en interfaces.
- **Availability Module**: MVP placeholder voor statuscontrole.
- **API Shell**: Host en orchestrator.
## 3. Interfaces & Services
Zie [component-methods.md](./component-methods.md) en [services.md](./services.md).
- **IModule**: Het contract voor module-integratie.
- **IAuthService / IUserService**: Beheer van identiteit en hiërarchische RBAC.
- **IAvailabilityService**: Controleert of de API of specifieke modules operationeel zijn.
## 4. Ontwerpbeslissingen (Besloten in Plan)
1. **Hybride Module Loading**: Core modules worden statisch geladen voor performance en type-safety; optionele modules kunnen dynamisch worden toegevoegd.
2. **Identity in Core**: Voor de MVP is Identity een integraal onderdeel van het framework om complexe autorisatie-hiërarchieën (Owner > Admin > User) eenvoudiger te borgen.
3. **Eenvoudige Projectstructuur**: Per module wordt één project gebruikt om de complexiteit laag te houden, met interne folders voor separation of concerns.
4. **Policy-Based RBAC**: Gebruik van standaard ASP.NET Core `AuthorizationPolicy` voor het afdwingen van de rol-hiërarchie.
## 5. Volgende Stappen
Op basis van dit ontwerp wordt de applicatie opgesplitst in **Units of Work** in de volgende fase (Units Generation).