# Application Design Plan — SlpModularCms.Api ## Stap 1: Analyse & Voorbereiding - [x] Requirements en User Stories analyseren op component-grenzen. - [x] Architecturale stijl (Clean Architecture) vertalen naar componenten. ## Stap 2: Ontwerp van Componenten & Verantwoordelijkheden - [x] **Core Framework Component**: Verantwoordelijk voor module-registratie, gedeelde interfaces en cross-cutting concerns. - [x] **Identity Module**: Gebruikersbeheer, authenticatie en de hiërarchische RBAC logica. - [x] **Availability Module**: De stub implementatie voor beschikbaarheidscontrole. - [x] **Web API Shell**: Het startpunt dat alles samenbrengt en Swagger host. - [x] Genereer `aidlc-docs/inception/application-design/components.md`. ## Stap 3: Interface & Method Design - [x] Definieer `IModule` contract voor module-initialisatie. - [x] Definieer `IAvailabilityService` contract. - [x] Definieer Identity services (bijv. `IUserService`, `IAuthService`). - [x] Genereer `aidlc-docs/inception/application-design/component-methods.md`. ## Stap 4: Service Orchestratie & Dependency Mapping - [x] Ontwerp het mechanisme voor het laden van modules (Dependency Injection patronen). - [x] Map de afhankelijkheden tussen Core, Modules en de API Shell. - [x] Genereer `aidlc-docs/inception/application-design/services.md`. - [x] Genereer `aidlc-docs/inception/application-design/component-dependency.md`. ## Stap 5: Consolidatie - [x] Genereer `aidlc-docs/inception/application-design/application-design.md`. - [x] Valideer op consistentie met de hiërarchische rollen (RBAC) en modulaire eisen. --- ## Vragen voor Application Design Beantwoord de volgende vragen om het ontwerp te verfijnen. Vul je keuze in na de `[Answer]:` tag. ### Vraag 1: Module Loading Strategie Hoe moeten modules technisch geladen worden door het raamwerk? A) Statische referentie: Modules zijn project-referenties in de API Shell (.csproj references). B) Dynamisch laden: Modules worden als DLL's uit een folder geladen bij opstarten. C) Hybride: Statische referentie voor core modules, dynamisch voor optionele modules. X) Anders: ... [Answer]: C ### Vraag 2: Identity Locatie Wordt Identity gezien als een kernonderdeel van het framework of als een uitwisselbare module? A) Kernonderdeel (Core): Altijd aanwezig, diep geïntegreerd. B) Module: Een aparte .csproj die optioneel/vervangbaar is. X) Anders: ... [Answer]: A ### Vraag 3: Clean Architecture Diepte Welke project-structuur heeft de voorkeur voor de modules? A) Eenvoudig: Eén project per module met interne folderstructuur (API, Logic, Data). B) Volledige Clean Architecture: Meerdere projecten per module (bijv. Identity.Domain, Identity.Application, Identity.Infrastructure). C) API-First: Modules bevatten alleen Controllers en Application logica, maken gebruik van gedeelde Core Data laag. X) Anders: ... [Answer]: A ### Vraag 4: RBAC Implementatie Hoe moet de hiërarchische RBAC (Owner > Admin > User) technisch worden afgedwongen? A) ASP.NET Core Policies: Gebruik maken van `AuthorizationPolicy` die de hiërarchie controleert. B) Custom Middleware: Een interceptor die bij elk request de rollen en hiërarchie valideert. C) Service-level checks: De logica wordt handmatig in de services aangeroepen voor elke actie. X) Anders: ... [Answer]: A