2026-06-15 17:00:16 +02:00
2026-06-15 17:00:16 +02:00
2026-06-15 17:00:16 +02:00
2026-06-15 17:00:16 +02:00

SlpModularCms

Een modulaire monolith CMS gebouwd met .NET 10.

Projectstructuur

  • src/SlpModularCms.Api: De host applicatie en API shell.
  • src/SlpModularCms.Core: Kern functionaliteiten, data modellen en interfaces.
  • src/SlpModularCms.Modules.*: Onafhankelijke functionele modules.

Development Setup

Vereisten

  • .NET 10 SDK
  • Podman of Docker (voor SQL Server)

1. Database opstarten

Start een SQL Server container met de volgende opdracht:

podman run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=MSSQL_s3cr3t_pw!" -p 1433:1433 --name sql-server -d mcr.microsoft.com/mssql/server:2022-latest

2. Configuratie

De applicatie maakt gebruik van een drie-bestanden patroon voor configuratie:

  • appsettings.json: Productie baseline.
  • appsettings.Development.json: Ontwikkelinstellingen.
  • appsettings.local.json: Lokale overrides (niet in Git).

Zorg dat er een src/SlpModularCms.Api/appsettings.local.json aanwezig is met de juiste connection string:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=127.0.0.1,1433;User ID=sa;Password=MSSQL_s3cr3t_pw!;Database=SlpModularCms;TrustServerCertificate=True;MultipleActiveResultSets=true"
  }
}

3. Applicatie starten

Voer de applicatie uit vanaf de root:

dotnet run --project src/SlpModularCms.Api

De API is daarna bereikbaar op https://localhost:7221 (of de geconfigureerde poort). De OpenAPI documentatie (Scalar) is beschikbaar op /scalar.

Initiële Setup (Bootstrapping)

Wanneer de applicatie voor de eerste keer wordt gestart met een lege database, moet er een "Owner" (eigenaar) worden aangemaakt. Dit kan via de setup endpoints.

1. Status controleren

Controleer of het systeem al geïnitialiseerd is:

  • Endpoint: GET /api/v1/Setup/status
  • Response: { "initialized": true/false }

2. Eerste Owner aanmaken

Dit endpoint is alleen bruikbaar als er nog geen Owner in de database staat.

  • Endpoint: POST /api/v1/Setup/owner
  • Payload:
{
  "email": "admin@example.com",
  "password": "JeWachtwoord123!"
}

Database Migraties

Alle database commando's moeten worden uitgevoerd vanaf de root van de projectmap.

Nieuwe migratie toevoegen

Wanneer je wijzigingen aanbrengt in de modellen (in SlpModularCms.Core):

dotnet ef migrations add <NaamVanDeMigratie> --project src\SlpModularCms.Core --startup-project src\SlpModularCms.Api

Database bijwerken

Om de migraties toe te passen op de database:

dotnet ef database update --project src\SlpModularCms.Core --startup-project src\SlpModularCms.Api

Nieuwe Module Toevoegen

Het systeem is ontworpen om eenvoudig uitgebreid te worden met nieuwe functionele modules. Volg deze stappen om een nieuwe module toe te voegen:

1. Project aanmaken

Maak een nieuw .NET 10 Class Library project aan in de src/ map. Gebruik de naamconventie SlpModularCms.Modules.<Naam>.

dotnet new classlib -n SlpModularCms.Modules.MijnNieuweModule -o src\SlpModularCms.Modules.MijnNieuweModule -f net10.0

2. Referenties toevoegen

Voeg de benodigde referentie naar Core toe en voeg het project toe aan de solution:

dotnet add src\SlpModularCms.Modules.MijnNieuweModule reference src\SlpModularCms.Core
dotnet sln SlpModularCms.sln add src\SlpModularCms.Modules.MijnNieuweModule

3. IModule implementeren

Maak een class aan die de IModule interface implementeert:

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using SlpModularCms.Core.Modules;

namespace SlpModularCms.Modules.MijnNieuweModule;

public class MijnNieuweModule : IModule
{
    public string Name => "MijnNieuweModule";
    public string Version => "1.0.0";

    public void RegisterServices(IServiceCollection services)
    {
        // Registreer hier module-specifieke services
    }

    public void UseModule(IApplicationBuilder app)
    {
        // Configureer hier middleware of andere pipeline zaken
    }
}

4. Registreren in de API

Om ervoor te zorgen dat de module tijdens ontwikkeling wordt meegenomen in de build-output van de API (zodat de ModuleOrchestrator de DLL kan vinden), voeg je een referentie toe aan het API project:

dotnet add src\SlpModularCms.Api reference src\SlpModularCms.Modules.MijnNieuweModule

De ModuleOrchestrator zal de module nu automatisch ontdekken en laden bij het opstarten.

Productie Setup

1. Build & Publish

Compileer de applicatie voor productie:

dotnet publish src/SlpModularCms.Api -c Release -o ./publish

2. Runtime Configuratie

In productie moeten gevoelige instellingen worden doorgegeven via Environment Variables:

  • ConnectionStrings__DefaultConnection
  • JwtSettings__Secret
  • JwtSettings__Issuer
  • JwtSettings__Audience

3. Database

Zorg dat de doeltabel bestaat en de migraties zijn uitgevoerd. In productie kan dit via een CI/CD pipeline worden afgehandeld met dotnet ef migrations script of door de applicatie bij startup migraties te laten draaien (indien geconfigureerd).

S
Description
No description provided
Readme
3.3 MiB
Languages
C# 57.4%
TypeScript 40.9%
JavaScript 1.1%
CSS 0.3%
HTML 0.3%