1. C4 niveau 1 — System Context
Tekstuele modellering
Op C4 niveau 1 staat OefenHub centraal als software-systeem. Dit diagram toont de systeemgrens, de primaire gebruikersgroepen en de belangrijkste externe systemen waarmee OefenHub communiceert.
Het doel van dit niveau is niet om interne technische onderdelen te laten zien, maar om duidelijk te maken wie OefenHub gebruikt, welke interacties functioneel bestaan en welke externe afhankelijkheden onderdeel zijn van de context.
Centraal systeem
OefenHub — Nederlandstalige webapplicatie voor oefenen, voortgang, beheer en ondersteuning van leerlingen, ouders/voogden, docenten en beheerders.
Primaire actoren
- Leerling — maakt oefeningen, hervat runs en bekijkt eigen resultaten.
- Ouder/voogd — bekijkt gekoppelde leerlingdata en kan live meekijken.
- Docent — beheert niveaus, categorieën, oefeningen en leerlingtoegang.
- Beheerder — beheert accounts, centrale inhoud, instellingen en systeembeheer.
- TestDocent — gebruikt testmodules in een gecontroleerde docentcontext.
Externe systemen
- Keycloak — externe identity provider voor authenticatie, registratie, sessies en credential-lifecycle.
- Mailvoorziening — externe e-mailafhandeling voor verificaties, uitnodigingen en notificatiegerelateerde processen.
Toelichting bij het diagram
De database, realtime-functionaliteit, scheduler/cleanup-processen, PDF-generatie en logging zijn bewust niet in dit contextdiagram opgenomen. Deze horen niet thuis op systeemcontextniveau maar op containerniveau.
Het contextdiagram is dus bewust compact gehouden: één centraal systeem, vijf actoren en twee externe systemen.

Figuur 1 — OefenHub C4 niveau 1: System Context
workspace "OefenHub" "C4 model niveau 1 - System Context" {
model {
leerling = person "Leerling" "Maakt oefeningen, hervat oefeningen en bekijkt eigen resultaten binnen toegestane niveaucontext."
ouder = person "Ouder/voogd" "Bekijkt gekoppelde leerlingdata en kan live meekijken."
docent = person "Docent" "Beheert niveaus, categorieën, oefeningen en leerlingtoegang."
beheerder = person "Beheerder" "Beheert accounts, centrale inhoud, instellingen en systeembeheer."
testdocent = person "TestDocent" "Gebruikt testmodules in een gecontroleerde docentcontext."
oefenhub = softwareSystem "OefenHub" "Nederlandstalige webapplicatie voor oefenen, voortgang, beheer en ondersteuning van leerlingen, ouders/voogden, docenten en beheerders."
keycloak = softwareSystem "Keycloak" "Externe identity provider voor authenticatie, registratie, sessies en credential-lifecycle."
mail = softwareSystem "Mailvoorziening" "Externe e-mailafhandeling voor verificaties, uitnodigingen en notificatiegerelateerde processen."
leerling -> oefenhub "Maakt oefeningen, hervat runs en bekijkt resultaten"
ouder -> oefenhub "Bekijkt gekoppelde leerlingdata en kijkt live mee"
docent -> oefenhub "Beheert niveaus, inhoud en leerlingtoegang"
beheerder -> oefenhub "Voert systeem- en domeinbeheer uit"
testdocent -> oefenhub "Test oefenmodules en testgedrag"
oefenhub -> keycloak "Gebruikt voor authenticatie, registratie en identity-gerelateerde flows"
oefenhub -> mail "Verstuurt verificaties, uitnodigingen en notificatie-e-mails"
}
views {
systemContext oefenhub "SystemContext" {
include *
autolayout lr
title "OefenHub - C4 niveau 1 - System Context"
}
theme default
}
}