AI voor Project Scaffolding: Boilerplate Genereren Zonder Hersendood te Worden

Boilerplate code is een noodzakelijk kwaad. AI-tools kunnen tegenwoordig complete projectstructuren opzetten. Maar hoe bruikbaar is dat resultaat in de praktijk?

Jean-Pierre Broeders

Freelance DevOps Engineer

30 maart 20265 min. leestijd
AI voor Project Scaffolding: Boilerplate Genereren Zonder Hersendood te Worden

AI voor Project Scaffolding: Boilerplate Genereren Zonder Hersendood te Worden

Elk nieuw project begint met hetzelfde ritueel. Mappenstructuur aanmaken, config files kopiëren van een vorig project, dependencies installeren, linting opzetten, CI pipeline configureren. Het kost makkelijk een halve dag voordat er ook maar één regel businesslogica geschreven wordt.

AI-tools beloven daar verandering in te brengen. Niet door magische code te produceren, maar door het saaie werk over te nemen. De vraag is: werkt dat ook echt?

Het Boilerplate Probleem

Bij een gemiddeld .NET project ziet de opstart er ongeveer zo uit:

  • Solution file met meerdere projecten
  • Dependency injection setup
  • Logging configuratie (Serilog, OpenTelemetry)
  • Dockerfile en docker-compose
  • GitHub Actions workflow
  • Health checks, middleware, error handling
  • Entity Framework setup met migrations

Dat zijn tientallen bestanden die grotendeels hetzelfde patroon volgen. Kopiëren uit een template werkt, maar templates raken snel verouderd. En elke keer handmatig aanpassen kost ook weer tijd.

Wat AI-tools Hier Kunnen

De huidige generatie code-assistenten — Copilot, Cursor, Claude — kan behoorlijk wat van deze setup automatiseren. Niet door een magische "generate project" knop, maar via gerichte prompts.

Een prompt als "Genereer een ASP.NET 8 Web API project met Serilog, health checks, en Entity Framework met PostgreSQL" levert in de meeste gevallen een werkende basisstructuur op. Inclusief Program.cs, appsettings, en de benodigde NuGet packages.

// Typisch AI-gegenereerde Program.cs - werkt, maar heeft fine-tuning nodig
var builder = WebApplication.CreateBuilder(args);

builder.Host.UseSerilog((context, config) =>
    config.ReadFrom.Configuration(context.Configuration));

builder.Services.AddDbContext<AppDbContext>(options =>
    options.UseNpgsql(builder.Configuration
        .GetConnectionString("DefaultConnection")));

builder.Services.AddHealthChecks()
    .AddNpgSql(builder.Configuration
        .GetConnectionString("DefaultConnection")!);

var app = builder.Build();

app.UseSerilogRequestLogging();
app.MapHealthChecks("/health");
app.MapControllers();

app.Run();

Dat is bruikbaar. Niet perfect — de error handling ontbreekt, er zit geen middleware pipeline in, en de connection string handling is naïef — maar als startpunt scheelt het een kwartier tot twintig minuten.

Waar Het Goed Werkt

Sommige types boilerplate zijn bijna perfect te genereren:

Docker configuratie. Een Dockerfile voor een .NET API is zo standaard dat AI-tools die foutloos produceren. Multi-stage builds, juiste base images, correct geplaatste COPY en RUN statements. Hier valt weinig op af te dingen.

CI/CD pipelines. GitHub Actions workflows voor build-test-deploy zijn repetitief genoeg dat de gegenereerde output direct bruikbaar is. Zeker voor standaard flows: build, run tests, push Docker image, deploy naar staging.

CRUD endpoints. Het klassieke controller-service-repository patroon voor een simpele entity? Dat genereert AI sneller dan het handmatig typen ervan duurt. Inclusief DTO mapping en basis validatie.

Waar Het Misgaat

Het wordt lastiger bij configuratie die projectspecifiek is.

Omgevingsvariabelen en secrets. AI kent de standaard patronen, maar niet welke secrets er nodig zijn voor een specifiek project. De gegenereerde code gebruikt hardcoded strings of generieke placeholder namen die niet matchen met de daadwerkelijke infrastructuur.

Authenticatie en autorisatie. Hier gaat het regelmatig fout. De gegenereerde JWT configuratie werkt technisch, maar mist vaak belangrijke details: token rotation, refresh token flows, proper claim mapping. Niet het soort code dat zonder review naar productie mag.

Project-specifieke conventies. Elk team heeft eigen patronen. Naamconventies, mappenstructuur, hoe errors gelogd worden. AI baseert zich op de meest voorkomende patronen uit de trainingsdata, niet op wat binnen een specifiek team gebruikelijk is.

Praktische Aanpak

De meest effectieve manier om AI voor scaffolding in te zetten:

StapWatAI Bruikbaarheid
1Basisstructuur genereren⭐⭐⭐⭐⭐
2Config files aanpassen aan project⭐⭐⭐
3Authenticatie/autorisatie setup⭐⭐
4Team-specifieke conventies toepassen

De truc zit in stap 1 volledig aan AI overlaten en bij stap 2-4 steeds meer handmatig bijsturen. Probeer niet alles in één prompt te proppen. Genereer de basis, review, en bouw daar iteratief op verder.

Context Meegeven Maakt Het Verschil

Een kale prompt levert generieke code op. Maar geef de AI een bestaande Program.cs of docker-compose.yml als referentie, en de output volgt ineens wél de projectconventies. Tools als Cursor en Continue doen dit automatisch door de codebase te indexeren. Het verschil in kwaliteit is enorm.

Hetzelfde geldt voor .editorconfig, Directory.Build.props, en andere projectbrede configuratie. Hoe meer context, hoe beter de scaffolding matcht met wat er al staat.

Tijdsbesparing

Op basis van een paar maanden dagelijks gebruik: de opstart van een nieuw project of microservice duurt nu gemiddeld 30-45 minuten in plaats van 3-4 uur. Het meeste van die tijd gaat naar review en aanpassingen, niet naar typen.

Dat is geen revolutie. Maar voor teams die regelmatig nieuwe services opzetten — microservices architecturen, event-driven systemen — telt het op. Tien nieuwe services per kwartaal, elk drie uur bespaard: dat is een complete werkweek terug.

Conclusie (Zonder De Hype)

AI-scaffolding is geen vervanging voor een goed template repository of een Yeoman generator. Het is een aanvulling. Voor standaard patronen werkt het uitstekend. Voor projectspecifieke zaken blijft menselijke kennis nodig.

De grootste winst zit niet in de initiële generatie, maar in het iteratief verfijnen. Genereer de basis, pas aan, gebruik die aangepaste versie als context voor de volgende component. Zo bouw je snel op zonder de kwaliteit in te leveren die bij productie-code hoort.

Wil je op de hoogte blijven?

Schrijf je in voor mijn nieuwsbrief of neem contact op voor freelance projecten.

Neem Contact Op