Adds requirements and userstories. also updates diagrams to be mermaid diagrams instead of text variants

This commit is contained in:
2026-06-17 11:31:17 +02:00
parent 73025c5a84
commit c7154e288f
13 changed files with 1018 additions and 163 deletions
@@ -7,60 +7,71 @@
## Project Structure
```
SlpModularCms/
+-- src/
| +-- SlpModularCms.Api/ # API host
| | +-- Extensions/
| | | +-- ServiceCollectionExtensions.cs # DI setup (JWT, Identity, EF, Auth)
| | +-- Infrastructure/ # Global exception handler
| | +-- Properties/launchSettings.json
| | +-- Program.cs # App startup and module loading
| | +-- appsettings.json
| | +-- appsettings.local.json # Local dev overrides
| |
| +-- SlpModularCms.Core/ # Shared core
| | +-- Availability/
| | | +-- AvailabilityOptions.cs # Circuit breaker config
| | | +-- AvailabilityStatus.cs # Enum: Available, Maintenance, Unavailable
| | +-- Data/
| | | +-- ApplicationDbContext.cs # EF Core DbContext
| | +-- Exceptions/ # Custom exception types
| | +-- Identity/
| | | +-- Authorization/ # Policy handlers
| | | +-- Entities/
| | | | +-- ApplicationUser.cs # IdentityUser<Guid> + IsActive + CreatedAt
| | | | +-- ApplicationRole.cs # IdentityRole<Guid>
| | | | +-- RefreshToken.cs # Refresh token entity
| | | | +-- Invitation.cs # Invite entity with expiry
| | | | +-- GlobalAvailabilityState.cs # Persisted system status
| | | +-- Models/ # DTOs/request-response models
| | | +-- Services/
| | | +-- AuthService.cs # JWT generation + token validation
| | | +-- InvitationService.cs # Invite creation + completion
| | | +-- SetupService.cs # Initial owner creation
| | +-- Migrations/ # EF Core migrations
| | +-- Modules/
| | +-- IModule.cs # Module interface (Name, Version, RegisterServices, UseModule)
| | +-- ModuleInfo.cs # Module metadata record
| |
| +-- SlpModularCms.Modules.Identity/ # Identity feature module
| | +-- Controllers/
| | +-- AuthController.cs # /auth/* endpoints
| | +-- SetupController.cs # /setup/* endpoints
| | +-- UsersController.cs # /users/* endpoints
| |
| +-- SlpModularCms.Modules.Availability/ # Availability feature module
| | +-- Controllers/
| | | +-- AvailabilityController.cs # /availability/* endpoints
| | +-- Middleware/ # Availability check middleware
| | +-- Services/
| | +-- PersistentAvailabilityService.cs # Reads/writes status to DB + cache
| |
| +-- SlpModularCms.Core.Tests/ # Core unit tests
| +-- SlpModularCms.Modules.Availability.Tests/ # Availability unit tests
|
+-- aidlc-docs/ # AI-DLC workflow documentation
```mermaid
graph TD
Root["SlpModularCms/"]
Src["src/"]
Api["SlpModularCms.Api\n(API host)"]
ApiExt["Extensions/\nServiceCollectionExtensions.cs"]
ApiInfra["Infrastructure/\nGlobal exception handler"]
ApiProg["Program.cs\nApp startup + module loading"]
Core["SlpModularCms.Core\n(Shared core)"]
CoreAvail["Availability/\nAvailabilityOptions.cs\nAvailabilityStatus.cs"]
CoreData["Data/\nApplicationDbContext.cs"]
CoreIdentity["Identity/\nEntities, Models, Services\nAuthorization/"]
CoreMigrations["Migrations/\nEF Core migrations"]
CoreModules["Modules/\nIModule.cs, ModuleInfo.cs"]
ModIdentity["SlpModularCms.Modules.Identity\n(Identity module)"]
ModIdentityCtrl["Controllers/\nAuthController\nSetupController\nUsersController"]
ModAvail["SlpModularCms.Modules.Availability\n(Availability module)"]
ModAvailCtrl["Controllers/\nAvailabilityController"]
ModAvailSvc["Services/\nPersistentAvailabilityService"]
Tests1["SlpModularCms.Core.Tests"]
Tests2["SlpModularCms.Modules.Availability.Tests"]
Docs["aidlc-docs/\nAI-DLC workflow documentation"]
Root --> Src
Root --> Docs
Src --> Api
Src --> Core
Src --> ModIdentity
Src --> ModAvail
Src --> Tests1
Src --> Tests2
Api --> ApiExt
Api --> ApiInfra
Api --> ApiProg
Core --> CoreAvail
Core --> CoreData
Core --> CoreIdentity
Core --> CoreMigrations
Core --> CoreModules
ModIdentity --> ModIdentityCtrl
ModAvail --> ModAvailCtrl
ModAvail --> ModAvailSvc
style Api fill:#4CAF50,stroke:#2E7D32,color:#fff
style ApiExt fill:#4CAF50,stroke:#2E7D32,color:#fff
style ApiInfra fill:#4CAF50,stroke:#2E7D32,color:#fff
style ApiProg fill:#4CAF50,stroke:#2E7D32,color:#fff
style Core fill:#FFC107,stroke:#F57F17,color:#000
style CoreAvail fill:#FFC107,stroke:#F57F17,color:#000
style CoreData fill:#FFC107,stroke:#F57F17,color:#000
style CoreIdentity fill:#FFC107,stroke:#F57F17,color:#000
style CoreMigrations fill:#FFC107,stroke:#F57F17,color:#000
style CoreModules fill:#FFC107,stroke:#F57F17,color:#000
style ModIdentity fill:#4CAF50,stroke:#2E7D32,color:#fff
style ModIdentityCtrl fill:#4CAF50,stroke:#2E7D32,color:#fff
style ModAvail fill:#4CAF50,stroke:#2E7D32,color:#fff
style ModAvailCtrl fill:#4CAF50,stroke:#2E7D32,color:#fff
style ModAvailSvc fill:#4CAF50,stroke:#2E7D32,color:#fff
style Tests1 fill:#9E9E9E,stroke:#424242,color:#fff
style Tests2 fill:#9E9E9E,stroke:#424242,color:#fff
style Docs fill:#CE93D8,stroke:#6A1B9A,color:#000
```
## Key Classes/Modules