# 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).