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 @@
# NFR Requirements — Unit 03: Availability Module
Dit document specificeert de non-functionele vereisten voor de beschikbaarheidsmodule.
## 1. Performance (AVAIL-PERF)
- **AVAIL-PERF-01: Middleware Latency**:
- De Availability Middleware mag maximaal 5ms toevoegen aan de totale requestduur.
- Dit vereist een geoptimaliseerde database check (indexering op de status tabel).
- **AVAIL-PERF-02: Real-time Check**:
- Er wordt GEEN caching toegepast in de middleware (conform gebruikerskeuze). Elke request voert een actuele check uit om maximale consistentie te waarborgen.
## 2. Betrouwbaarheid & Persistentie (AVAIL-REL)
- **AVAIL-REL-01: Persistent Status**:
- De beschikbaarheidsstatus moet in de database worden opgeslagen, zodat deze behouden blijft na een herstart van de applicatie.
- **AVAIL-REL-02: Fallback**:
- Indien de database onbereikbaar is, moet de `IAvailabilityService` terugvallen op een "Veilige" status (bijv. `Available` of de laatst bekende status in het geheugen) om een lock-out te voorkomen.
## 3. Beveiliging (AVAIL-SEC)
- **AVAIL-SEC-01: Access Control**:
- Alleen gebruikers met de rol `Owner` kunnen de globale beschikbaarheidsstatus van de API wijzigen via een beveiligd endpoint.
- **AVAIL-SEC-02: Maintenance Bypass**:
- De bypass voor beheerders (zoals gedefinieerd in Functional Design) moet strikt gecontroleerd worden op basis van JWT claims.
## 4. Onderhoudbaarheid (AVAIL-MAINT)
- **AVAIL-MAINT-01: Audit Trail**:
- Elke wijziging van de beschikbaarheidsstatus moet worden gelogd in de `AuditLogs` tabel (Unit 02), inclusief de reden en de uitvoerder.
@@ -0,0 +1,26 @@
# Tech Stack Decisions — Unit 03: Availability Module
Dit document beschrijft de definitieve technische keuzes voor Unit 03.
## 1. Opslag (Persistence)
- **Provider**: Microsoft SQL Server (conform NFR-01).
- **Entiteit**: `GlobalAvailabilityState` (Single record).
## 2. Middleware Implementatie
- **Type**: Custom Middleware in de `SlpModularCms.Api` (Shell).
- **Dependency**: Maakt gebruik van de `IAvailabilityService` uit Unit 01.
## 3. Interfaces & DI
- **Service**: `PersistentAvailabilityService` (Implementeert `IAvailabilityService`).
- **Lifetime**: `Scoped` (voor database toegang per request).
## 4. Configuratie
- **Options Pattern**: Gebruik van `IOptions<AvailabilitySettings>` voor de fallback status en andere drempelwaarden.
## 5. Monitoring
- **Logging**: Gebruik van `ILogger` voor het loggen van statuswijzigingen en middleware blokkades (Warning niveau).