LifterLMS alternatieven: Een moderne LMS-stack bouwen in 2026
LifterLMS-alternatieven: Een modern LMS-stack bouwen in 2026
Ik heb meer LMS-platforms gebouwd dan ik graag zou willen toegeven. Sommige op LifterLMS, enkele op LearnDash, een paar op aangepaste Rails-apps die waarschijnlijk nog steeds hun maintainers achtervolgen. En dit is waar ik steeds op terugkom: het traditionele WordPress LMS-plugin-model -- waarbij één monoliet cursussen, lidmaatschappen, betalingen, quizzes, certificaten en e-mail afhandelt -- is fundamenteel in tegenspraak met hoe we in 2026 goede software bouwen.
LifterLMS is niet slecht. Het is eigenlijk behoorlijk capabel, vooral als je lidmaatschapsfunctionaliteit vanaf dag één wilt hebben. Maar eenmaal je enkele jaren hebt gewerkt met plugin-conflicten, prestatieproblemen op cursuscataloguspagina's en de creatieve beperkingen van een PHP-gerenderde frontend, begin je je af te vragen: wat als we dit gewoon... niet op deze manier doen?
Dit artikel schetst een modern LMS-stack-architectuur die LifterLMS (of welk monolithisch LMS-plugin dan ook) vervangt door een composable, headless-benadering. Ik zal echte tools, echte afwegingen en de architectonische beslissingen behandelen die ertoe doen wanneer je iets bouwt dat lang mee moet gaan.
Inhoudsopgave
- Waarom LifterLMS tegen een plafond aanloopt
- Hoe een modern LMS-stack er werkelijk uitziet
- De inhoudslaag: Headless CMS voor cursusinhoud
- De frontend: Next.js of Astro voor de leerervaring
- Authenticatie en gebruikersbeheer
- Betalingen en geldverdienmodel
- Voortgangsbijhouden en de gegevenslaag
- Quizzes, beoordelingen en interactieve inhoud
- Architecturen vergelijken: monoliet versus headless LMS
- Wanneer deze benadering zinvol is (en wanneer niet)
- Een voorbeeld van een real-world stack
- Veelgestelde vragen

Waarom LifterLMS tegen een plafond aanloopt
LifterLMS doet veel dingen goed. De gratis core is echt nuttig -- je kunt cursussen zonder enige uitgave lanceren. Ingebouwde lidmaatschapsniveaus betekenen minder plugin-afhankelijkheden. En voor een WordPress-plugin is de beheerworkflow stabiel en voorspelbaar.
Maar laten we het hebben over waar het misgaat.
Prestaties onder belasting
Elke paginalading raakt de database meerdere keren. Cursuscataloguspagina's met 50+ cursussen, inschrijvingscontroles, verificatie van lidmaatschapsniveaus, dynamische prijsstelling -- allemaal server-side gerenderd via PHP. Ik heb LifterLMS-sites gezien waar de cursusarchief 3-4 seconden nodig heeft om te renderen, zelfs met object-caching ingeschakeld. Pagina-caching helpt voor afgemelde gebruikers, maar je daadwerkelijke studenten -- de ingelogde -- krijgen de volledige niet-gecachte ervaring.
De add-on-kostenspirale
Het "gratis starten"-model van LifterLMS wordt snel duur. Heb je Stripe-betalingen nodig? Dat is een add-on. Geavanceerde quizzes? Add-on. Opdrachten? Add-on. Groepen? Add-on. Op het moment dat je een production-ready LMS hebt, kijk je naar $300-$500/jaar in add-on-bundels, wat je in dezelfde prijsklasse plaatst als LearnDash of zelfs enkele SaaS-platforms zoals TalentLMS (vanaf $89/maand in 2026).
Frontend-beperkingen
Dit is de grote voor mij. Je leerervaring is beperkt door WordPress-thema's en welke CSS-overrides je maar kunt stapelen. Wil je een op React gebaseerde interactieve les? Je vecht tegen het systeem. Wil je een code playground, een gezamenlijk whiteboard of een real-time quiz met WebSocket-updates insluiten? Veel succes om dat netjes in een WordPress-sjabloon te doen.
Het plugin-afhankelijkheidsweb
Ook al bouwt LifterLMS meer in dan LearnDash, je eindigt toch met een stapel plugins: een formplugin, een SEO-plugin, een cachingplugin, misschien WooCommerce voor fysieke producten, een paginabuilder. Elk is een potentieel conflictpunt, een beveiligingsoppervlak en een onderhoudslas.
Hoe een modern LMS-stack er werkelijk uitziet
Het kernidee is decompositie. In plaats van één plugin die alles doet, kies je best-in-class tools voor elk aspect en verbind je ze via API's. Dit is hetzelfde patroon dat e-commerce (headless Shopify, Saleor, Medusa) en contentpublicatie (headless CMS + statische frontends) heeft getransformeerd.
Hier is de architectuur op hoog niveau:
┌─────────────────────────────────────────────┐
│ Frontend (Next.js / Astro) │
│ Cursuspagina's, lessen, quizzes, dashboard│
└──────────────┬──────────────────────────────┘
│ API-aanroepen
┌──────────┼──────────────┐
│ │ │
┌───▼───┐ ┌───▼────┐ ┌──────▼──────┐
│Headless│ │Auth │ │ Voortgang │
│ CMS │ │Service │ │ Tracking DB │
│(Sanity/│ │(Clerk/ │ │(Supabase/ │
│Strapi) │ │Auth0) │ │PlanetScale) │
└────────┘ └────────┘ └─────────────┘
│ │
┌───▼────────────────────────▼───┐
│ Betalingslaag │
│ (Stripe / Lemon Squeezy) │
└────────────────────────────────┘
Elk onderdeel is onafhankelijk schaalbaar, vervangbaar en testbaar. Laten we elk laag uitwerken.
De inhoudslaag: Headless CMS voor cursusinhoud
Je cursusinhoud -- lessen, modules, video-embeds, downloadbare bronnen, instructeurbio's -- staat in een headless CMS. Dit is de grootste architectonische winst omdat het inhoudbeheer van inhoudbezorging scheidt.
Waarom niet gewoon Markdown-bestanden gebruiken?
Dat zou kunnen, en voor een team van alleen ontwikkelaars dat een intern trainingsplatform bouwt, zijn MDX-bestanden in een Git-repo misschien perfect. Maar op het moment dat je niet-technische instructeurs inhoud laat maken, heb je een goed bewerkingsinterface nodig.
Topkeuzes voor 2026
Sanity is mijn voorkeur voor complexe inhoudsmodellen. Je kunt een cursusschema definiëren met modules, lessen, quizzes en vereisten als gestructureerde gegevens. De realtime gezamenlijke bewerking is uitstekend, en Portable Text geeft je rijke inhoud zonder het HTML-blob-probleem. Het gratis plan verwerkt tot 100K API-verzoeken/maand, wat de meeste kleine tot middelgrote LMS-implementaties bestrijkt.
Strapi (v5, uitgebracht in 2025) is de sterkste open-source-optie. Host het zelf op een $20/maand VPS en je hebt volledige controle over je content-API. De content-type-builder laat je cursussen, lessen en evaluaties visueel modelleren, waar instructeurs echt van houden.
Payload CMS verdient vermelding -- het is TypeScript-native, zelf te hosten, en heeft uitstekend toegangsbeheer ingebouwd. Als je team al diep in het TypeScript-ecosysteem zit, past Payload als gegoten.
We hebben verschillende headless CMS-implementaties voor onderwijsclients gebouwd via onze headless CMS-ontwikkelingspraktijk, en de inhoudsmodelleringsfase is waar de meeste belangrijke beslissingen plaatsvinden.
// Voorbeeld: Sanity-schema voor een cursusles
export default {
name: 'lesson',
title: 'Lesson',
type: 'document',
fields: [
{ name: 'title', type: 'string', validation: Rule => Rule.required() },
{ name: 'slug', type: 'slug', options: { source: 'title' } },
{ name: 'module', type: 'reference', to: [{ type: 'module' }] },
{ name: 'order', type: 'number' },
{ name: 'content', type: 'array', of: [{ type: 'block' }, { type: 'code' }, { type: 'videoEmbed' }] },
{ name: 'duration', type: 'number', description: 'Geschatte minuten' },
{ name: 'isFree', type: 'boolean', initialValue: false },
{ name: 'prerequisites', type: 'array', of: [{ type: 'reference', to: [{ type: 'lesson' }] }] },
],
}

De frontend: Next.js of Astro voor de leerervaring
Dit is waar je studenten werkelijk hun tijd doorbrengen, dus het moet snel, toegankelijk en flexibel genoeg zijn om diverse inhoudstypen te verwerken.
Next.js: De full-stack-keuze
Next.js (App Router, RSC) is de natuurlijke keuze wanneer je LMS server-side logica nodig heeft: inschrijvingscontroles, voortgangopslaan, quizindiening, certificaatgeneratie. Server Components stellen je in staat cursusgegevens op te halen zonder JavaScript naar de client te verzenden. Server Actions verwerken formulierindieningen (quizantwoorden, profielupdates) zonder dat je een aparte API bouwt.
We doen veel Next.js-ontwikkeling bij Social Animal, en voor LMS-projecten specifiek geeft de combinatie van ISR (Incremental Static Regeneration) voor cursuscataloguspagina's en dynamische rendering voor studentdashboards je het beste van beide werelden.
Astro: De content-zware keuze
Als je LMS primair inhoudbezorging is -- denk aan documentatie-stijlcursussen, geschreven tutorials, videocursussen zonder zware interactiviteit -- Astro verscheept dramatisch minder JavaScript. Een cursuspagina die voor 95% statische inhoud is met één interactieve quizcomponent? Astro's island-architectuur verwerkt dat prachtig.
---
// src/pages/courses/[slug]/lessons/[lesson].astro
import { sanityClient } from '../../../lib/sanity';
import LessonLayout from '../../../layouts/LessonLayout.astro';
import QuizWidget from '../../../components/QuizWidget'; // React-eiland
import ProgressTracker from '../../../components/ProgressTracker'; // React-eiland
const { slug, lesson } = Astro.params;
const lessonData = await sanityClient.fetch(
`*[_type == "lesson" && slug.current == $lesson][0]{...}`,
{ lesson }
);
---
<LessonLayout title={lessonData.title}>
<article class="lesson-content">
<PortableText value={lessonData.content} />
</article>
{lessonData.quiz && (
<QuizWidget client:visible quizId={lessonData.quiz._ref} />
)}
<ProgressTracker client:idle lessonId={lessonData._id} />
</LessonLayout>
De client:visible-richtlijn betekent dat de quizcomponent alleen hybridiseert wanneer de student er heen scrollt. Nul JavaScript-kosten tot ze het werkelijk nodig hebben.
Authenticatie en gebruikersbeheer
Dit is waar veel "headless LMS"-blogposts hun handen zwaaien en zeggen "gebruik gewoon Auth0." Het is genuanceerder dan dat.
Je auth-laag moet verwerken:
- Registratie en inloggen van studenten
- Rolgebaseerde toegang (student, instructeur, beheerder)
- Verificatie van cursusinschrijving (mag deze gebruiker deze les zien?)
- Sessiebeheer op meerdere apparaten
Clerk
Clerk is de standaard geworden voor Next.js-projecten, en met goede reden. De <SignIn />- en <UserProfile />-componenten besparen weken UI-werk. Aangepaste claims laten je inschrijvingsgegevens en rollen opslaan. Prijsstelling begint gratis voor tot 10.000 maandelijks actieve gebruikers -- meer dan voldoende voor de meeste cursusplatforms.
Supabase Auth
Als je al Supabase voor je gegevenslaag gebruikt (meer daarover hieronder), is de ingebouwde auth solide en gratis. Beveiliging op rijniveau betekent dat je "alleen ingeschreven studenten zien deze les" op databaseniveau kunt afdwingen, wat een sterk beveiligingspatroon is.
Auth.js (voorheen NextAuth)
De open-source-optie. Meer setup, meer flexibiliteit, geen vendor lock-in. Als je alles zelf host, is dit het pad.
Betalingen en geldverdienmodel
LifterLMS bundelt betalingsverwerking, en eerlijk gezegd, doet het dat redelijk goed. Dit repliceren in een headless-stack vereist wat nadenken.
Stripe is de voor de hand liggende keuze. Stripe Checkout verwerkt de betaal-UI, en Stripe-webhooks geven je backend een bericht wanneer een aankoop voltooid is. Voor op abonnement gebaseerde toegang (maandelijks lidmaatschap van alle cursussen) doet Stripe Billing het zware werk.
Lemon Squeezy is het overwegen waard als je cursussen internationaal verkoopt en niet zelf met btw/GST-naleving wilt dealen. Ze fungeren als je handelsvertegenwoordiger. De afweging is iets hogere kosten (5% + 50¢ per transactie versus Stripe's 2,9% + 30¢).
Hier is een vereenvoudigde inschrijvingsstroom:
// Server Action: verwerk voltooide betaling webhook
export async function handleStripeWebhook(event: Stripe.Event) {
if (event.type === 'checkout.session.completed') {
const session = event.data.object;
const userId = session.metadata.userId;
const courseId = session.metadata.courseId;
await db.enrollment.create({
data: {
userId,
courseId,
enrolledAt: new Date(),
status: 'active',
},
});
// Activeer welkomste-mail, ontgrendel eerste module, enz.
await triggerEnrollmentWorkflow(userId, courseId);
}
}
Voortgangsbijhouden en de gegevenslaag
Dit is het hart van elk LMS -- weten waar elke student is, wat ze hebben voltooid en hoe ze presteren.
Databaseopties
Supabase (Postgres) geeft je een relationele database met real-time-abonnementen, beveiliging op rijniveau en een genereus gratis plan. Voor de meeste LMS-implementaties onder 50.000 gebruikers werkt het gratis plan. Het Pro-plan op $25/maand verwerkt aanzienlijk meer.
PlanetScale (MySQL) biedt uitstekende vertakingsworkflows voor schemawijzigingen. Als je snel op je gegevensmodel itereert -- wat je zult doen in de vroege stadia -- is databasevertakking echt nuttig.
Neon (serverless Postgres) is mijn huidige favoriet voor Next.js-projecten. Koude starts zijn snel, en je betaalt alleen voor wat je gebruikt. Het gratis plan omvat 0,5 GB opslag en 100 rekenuren.
Het voortgingsschema
CREATE TABLE enrollments (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id TEXT NOT NULL,
course_id TEXT NOT NULL,
enrolled_at TIMESTAMP DEFAULT NOW(),
completed_at TIMESTAMP,
status TEXT DEFAULT 'active',
UNIQUE(user_id, course_id)
);
CREATE TABLE lesson_progress (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id TEXT NOT NULL,
lesson_id TEXT NOT NULL,
started_at TIMESTAMP DEFAULT NOW(),
completed_at TIMESTAMP,
time_spent_seconds INTEGER DEFAULT 0,
UNIQUE(user_id, lesson_id)
);
CREATE TABLE quiz_attempts (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id TEXT NOT NULL,
quiz_id TEXT NOT NULL,
score DECIMAL(5,2),
answers JSONB,
submitted_at TIMESTAMP DEFAULT NOW()
);
Voor xAPI-naleving (wat zakelijke klanten soms vereisen) kun je leergebeurtenissen naar een Learning Record Store (LRS) zoals Learning Locker of Veracity loggen naast je primaire database.
Quizzes, beoordelingen en interactieve inhoud
Dit is waar LifterLMS -- en vooral LearnDash -- een echt voordeel hebben met hun ingebouwde quiz-engines. In een headless-stack bouw je dit zelf of gebruik je een service.
Bouw het zelf
Voor basis quizzes (meerkeuze, waar/onwaar, invullen), is een aangepaste React-component ondersteund door je database eenvoudig. Sla vragen en juiste antwoorden op in je CMS, render ze client-side, valideer server-side.
Gebruik een service
Typeform of Tally kunnen evaluaties verwerken met webhook-callbacks om scores vast te leggen. Niet ideaal voor hoog ingestelde tests maar werkbaar voor cursusquizzes.
Voor complexe evaluatiebehoeften -- vragenbanken, randomisatie, tijdslimieten, maatregelen tegen oneerlijkheid -- kijk je naar aangepaste ontwikkeling. Dit is precies het soort project waarbij werken met een ontwikkelingpartner zinvol is, omdat het krijgen van evaluatiebeveiliging correct niet triviaal is.
Architecturen vergelijken: monoliet versus headless LMS
| Aspect | LifterLMS (monoliet) | Headless LMS-stack | SaaS LMS (bijvoorbeeld Teachable) |
|---|---|---|---|
| Tijd tot lancering | Dagen tot weken | Weken tot maanden | Uren tot dagen |
| Initiële kosten | $0-$500/jaar | $0-$200/maand (hosting + services) | $39-$199/maand |
| Prestaties | Matig (PHP-gerenderd) | Uitstekend (statisch + edge) | Varieert per leverancier |
| Aanpassing | Thema + CSS-beperkt | Onbeperkt | Zeer beperkt |
| Inhoudsflexibiliteit | WordPress-editor | Elk inhoudstype | Platformspecifiek |
| Schaalbaarheid | Verticaal (grotere server) | Horizontaal (edge + CDN) | Door leverancier verwerkt |
| Vendor lock-in | WordPress-ecosysteem | Laag (ruild elk onderdeel) | Hoog |
| Ontwikkelaar vereist | Soms | Ja | Nee |
| Quiz-complexiteit | Matig (met add-ons) | Bouw wat je nodig hebt | Basis |
| Onderhoud | Plugin-updates, conflicten | Service-updates, minder conflict | Leverancier verzorgt het |
Wanneer deze benadering zinvol is (en wanneer niet)
Kies headless wanneer:
- Je leerervaring aangepaste interactiviteit nodig heeft (code playgrounds, simulaties, gezamenlijke oefeningen)
- Je meer dan een paar honderd gelijktijdige leerlingen hebt en prestaties ertoe doen
- Je het LMS met bestaande systemen wilt integreren (CRM, HR, aangepaste apps)
- Je geeft om frontend-UX en wilt volledige controle over design
- Je iets bouwt dat je 3+ jaar wilt bedrijven
Blijf bij LifterLMS wanneer:
- Je een solo-maker bent die je eerste cursus lanceert
- Budget is klein en je moet dit deze week, niet dit kwartaal, verzenden
- Je cursusinhoud is eenvoudig (videolessen, tekst, basis-quizzes)
- Je geen ontwikkelaar in je team hebt en niet van plan bent er een in te huren
- Lidmaatschap + cursusintegratie uit de doos matters meer dan aangepaste UX
Ik zal niet net doen alsof de headless-benadering altijd beter is. Het is meer werk vooraf. Het vereist voortdurende technische beslissingen. Voor veel use cases is LifterLMS of Tutor LMS op een goed geconfigureerde WordPress-host de juiste keuze.
Maar voor organisaties die een echt leerplatform bouwen -- niet alleen "cursussen op een website" -- geeft de headless-stack je een fundament dat je niet tegenwerkt als vereisten groeien.
Een voorbeeld van een real-world stack
Hier is een concrete stack die we zouden aanbevelen voor een middelgrote online academie met 20-50 cursussen en een paar duizend actieve studenten:
| Laag | Hulpmiddel | Maandelijks kosten |
|---|---|---|
| Frontend | Next.js op Vercel | $20 (Pro-plan) |
| CMS | Sanity | $0-$99 (Growth-plan) |
| Auth | Clerk | $0 (tot 10K MAU) |
| Database | Neon Postgres | $0-$19 |
| Betalingen | Stripe | 2,9% + 30¢ per transactie |
| Resend | $0-$20 | |
| Videohosting | Mux | Betaal-per-gebruik (~$0.007/min bekeken) |
| Zoeken | Algolia of Meilisearch | $0-$29 |
| Totaal | ~$60-190/maand + Stripe-kosten |
Vergelijk dat met LifterLMS met de Infinity Bundle ($999/jaar = ~$83/maand) plus beheerde WordPress-hosting ($30-50/maand), en de kosten zijn verrassend gelijkaardig. Maar de headless-stack geeft je sub-seconde paginaladingen, een aangepaste frontend en de mogelijkheid om elk onderdeel uit te wisselen zonder alles opnieuw op te bouwen.
Voor een dieper gesprek over welke architectuur voor jouw specifieke situatie het juiste is, kijk je naar onze prijzingspagina of neem gewoon direct contact op. We hebben vooral veel ervaring met dit soort platform-builds voor onderwijs.
Veelgestelde vragen
Kan ik mijn bestaande LifterLMS-cursussen migreren naar een headless-stack? Ja, maar het is niet een push-button-operatie. LifterLMS slaat cursusinhoud op in WordPress-berichten en aangepaste berichttypen. Je kunt deze gegevens exporteren via de WordPress REST API of WP-CLI en transformeren in je nieuwe CMS's inhoudsmodel. Studentenvoortgangsgegevens (inschrijvingen, quizscore's, voltooiingsrecords) staan in aangepaste databasetabellen die je afzonderlijk moet opvragen en migreren. Begroting 2-4 weken voor een volledige migratie van een site met 20+ cursussen.
Is een headless LMS-stack duurder dan LifterLMS? Niet noodzakelijk. De gratis core van LifterLMS is misleidend -- production-implementaties kosten meestal $300-$1.000/jaar in add-ons, plus $360-$600/jaar voor kwaliteit beheerde WordPress-hosting. Een headless-stack met gratis lagen van Sanity, Clerk en Neon op Vercel's Pro-plan loopt ongeveer $240/jaar in vaste kosten. Het echte kostenverschil is ontwikkelaarstijd: een headless-stack vereist meer initiële engineering.
Verlies ik SEO-voordelen door WordPress te verlaten? Nee -- je wint waarschijnlijk voordelen. Next.js en Astro produceren beide snelle, crawlbare HTML. Statische generatie betekent dat je cursuspagina's sneller laden dan PHP-gerenderde WordPress-pagina's, en Core Web Vitals-score's zijn meestal beter. Je zult zelf gestructureerde gegevens (cursusschema-markup) moeten implementeren, maar dat is slechts enkele regels JSON-LD.
Hoe verwerk ik cursuscertificaten in een headless-stack?
Genereer PDF-certificaten server-side met behulp van bibliotheken zoals @react-pdf/renderer of Puppeteer. Sla de certificaatsjabloon op in je CMS, vul deze met studentengegevens en voltooiingsdatum, genereer de PDF on-demand of via een achtergrondtaak en serveer het vanuit clouderopslag (S3 of Cloudflare R2). Het is meer werk dan de ingebouwde certificaten van LifterLMS, maar je krijgt volledige besturingselementen.
Hoe zit het met SCORM- en xAPI-naleving? Als je SCORM-naleving nodig hebt (gangbaar in zakelijke training), heb je een SCORM-speler-component nodig -- Rustici's SCORM Cloud ($125/maand en hoger) is de standaardkeuze. Voor xAPI (Tin Can API) kun je leerverklaringen rechtstreeks vanuit je frontend of via je API-laag naar een Learning Record Store loggen. De meeste hedendaagse zakelijke LMS-vereisten richten zich in 2026 op xAPI.
Kunnen niet-technische instructeurs cursussen maken in een headless CMS? Absoluut. Dat is een van de belangrijkste voordelen van hulpmiddelen zoals Sanity Studio en Strapi's beheervenster. Je definieert het inhoudsmodel (cursus → modules → lessen), en instructeurs krijgen een schoon, gericht bewerkingsinterface. Het is vaak eenvoudiger dan WordPress omdat er geen verleiding is om willekeurige plugins te installeren of lay-outs met de blokkeditor te verbreken. Je ontwerpt precies de bewerkingservaring die je instructeurs nodig hebben.
Hoe verhoudt dit zich tot SaaS-platforms zoals Teachable of Thinkific? SaaS-platforms zijn geweldig voor snelheid naar markt, maar verschrikkelijk voor aanpassing en lange-termijn economie. Teachable neemt een 5% transactiekosten op hun basisplan en beperkt je designopties aanzienlijk. Een headless-stack kost meer in ontwikkelaarstijd, maar geeft je volledige eigendom van je platform, je gegevens en je studentrelaties. Als je meer dan $5.000/maand in cursusopbrengsten genereert, voorkeur de economie een aangepaste stack binnen het eerste jaar.
Wat is het grootste risico bij het bouwen van een headless LMS? Scope creep. LMS-functies zijn bedrieglijk complex -- inhoudsdruppelen, vereiste ketens, groepsinschrijvingen, instructeurdashboards, analyses, e-mailsequenties. Als je probeert elke LifterLMS-functie voor de lancering te repliceren, zul je je budget opbranden. Begin met de kernlus (blader cursussen → inschrijven → verbruik lessen → track voortgang), lanceer daarmee en voeg functies op basis van werkelijke studentenfeedback toe. Het mooie van de samengestelde architectuur is dat je stukken incrementeel kunt toevoegen.