Skip to main content

Frontpages en overzichtsschermen

4.1 Doel

Frontpages zijn overzichts- en oriëntatiepagina’s. Zij geven gebruikers na binnenkomst in een geldige context een veilige startpositie, tonen compacte samenvattingsinformatie en verwijzen naar vaste vervolgroutes.

Een frontpage is nadrukkelijk geen detailpagina en geen mutatiescherm. Acties waarvoor eerst een leerling, kind, niveau, categorie, oefening, melding, account, module of ander domeinobject gekozen moet worden, blijven onderdeel van de achterliggende domeinflows.

Frontpages ondersteunen vooral:

  • herkenbare startcontext na login;
  • rolgerichte oriëntatie;
  • veilige doorverwijzing naar onderliggende routes;
  • compacte samenvattingsblokken;
  • read-only tellers en signalen;
  • contextgedreven contentblokken;
  • systeemnotificaties na normale paginaload.

4.2 Algemene frontpageregels

Voor alle frontpages gelden de volgende functionele regels.

  • De structurele layout en volgorde van hoofdblokken zijn codegedreven.
  • Beheerbare teksten, titels, labels en introducties kunnen via contentbeheer worden aangepast waar dat functioneel is voorzien.
  • Frontpages voeren geen contextafhankelijke domeinmutaties uit zonder expliciete objectselectie op een vervolgpagina.
  • Samenvattingswaarden zijn afgeleide readmodelwaarden.
  • Iedere teller moet een eenduidige teldefinitie hebben.
  • Geen enkele teller, kaart, knop of zichtbare route op een frontpage is autorisatiebewijs.
  • Vervolgacties controleren opnieuw server-side de actuele rol-, relatie-, object- en domeincontext.
  • Clientstate, browsergeschiedenis, querystrings of oude frontendselecties mogen geen frontpagecontext afdwingen.
  • Lege toestanden zijn normale toestanden wanneer de gebruiker wel toegang heeft tot de frontpage maar er geen relevante data is.
  • Systeemnotificaties blokkeren het laden van de frontpage niet. De pagina laadt eerst; daarna worden relevante notificaties boven de geladen pagina beoordeeld.

4.3 Bronpositie

Frontpages gebruiken meerdere bronlagen.

BronlaagBetekenis
FOBeschrijft de functionele samenhang, contextregels en afbakening van frontpages.
UsecasesBeschrijven hoe frontpages per rolcontext worden geopend en samengesteld.
SchermdocumentatieBeschrijft per frontpage de concrete blokken, waarden, acties en lege toestanden.
ContentbeheerBeheert tekstuele inhoud binnen bestaande frontpageblokken.
Database-informatieBeschrijft brondata, contentblokken, readmodels, systeemnotificaties en history.
MockupsOndersteunen visuele interpretatie, maar zijn geen bron voor definitieve tellers of testdata.

De frontpage zelf is geen zelfstandige persistente domeinentiteit. Frontpages worden opgebouwd uit accountcontext, rolcontext, relatiecontext, domeindata, contentblokken en afgeleide readmodels.

4.4 Contentblokken op frontpages

Frontpagecontent gebruikt het uniforme contentblokmodel.

Voor frontpages geldt:

VeldBetekenis
DomainTypeFrontPage
ContextTypePublic, NoRole, Student, Guardian, Teacher of Admin
ReferenceKeyCodevaste sleutel van het frontpageblok
TitleBeheerbare titel waar ondersteund
TextBeheerbare tekst waar ondersteund

Contentblokken beheren tekstuele inhoud, niet de structurele pagina-opbouw.

Niet beheerbaar via frontpagecontent zijn:

  • blokvolgorde;
  • bloklocatie;
  • componenttype;
  • layout;
  • responsive gedrag;
  • autorisatie;
  • zichtbare gegevenssets;
  • tellerdefinities;
  • routegedrag;
  • nieuwe technische blokkeys;
  • nieuwe frontpagecontexten;
  • persistente ontwerpen per rolcombinatie.

Wanneer een verwacht contentblok ontbreekt, wordt het blok veilig niet geladen of toont beheer een duidelijke niet-beschikbaarafhandeling. Het ontbreken van een contentblok leidt niet automatisch tot seed- of migratierecords.

4.5 Frontpagebeheer versus frontpageweergave

Frontpagebeheer is een beheerfunctie voor tekstuele content binnen bestaande basiscontexten. Frontpageweergave is de runtime-gebruikerspagina.

AspectFrontpagebeheerFrontpageweergave
DoelTekstuele inhoud beheren.Gebruiker oriënteren binnen actieve context.
ActorBeheerder.Eindgebruiker of beheerder in runtimecontext.
MutatieAlleen beheerbare contentvelden na expliciet opslaan.Geen domeinmutaties.
LayoutRead-only / codegedreven.Codegedreven.
TellersNiet configureerbaar.Read-only afgeleid.
RolcombinatiesControleerbaar, niet als apart ontwerp opgeslagen.Runtime samengesteld.

Frontpagebeheer mag geen autorisaties, navigatierechten, zichtbare gegevenssets of tellerdefinities wijzigen.

4.6 Niet-ingelogde frontpage

De publieke frontpage is de startpagina voor niet-ingelogde gebruikers.

Deze pagina toont geen afgeschermde domeindata.

Minimaal aanwezig zijn:

  • publieke introductietekst;
  • loginroute;
  • registratieroute wanneer registratie is toegestaan;
  • publieke footercontext;
  • eventueel publieke contentblokken;
  • eventueel publieke systeemnotificatie na paginaload.

De niet-ingelogde frontpage toont geen:

  • oefencatalogus;
  • leerlingcategorieën;
  • persoonlijke resultaten;
  • berichten;
  • meldingen;
  • relaties;
  • rolgebonden navigatie;
  • profielmenu;
  • beheerinformatie.

Wanneer registratie sitebreed is uitgeschakeld, wordt de registratieroute niet als reguliere actie aangeboden.

4.7 Frontpage zonder actieve rol

Een ingelogde gebruiker kan wel geauthenticeerd zijn, maar nog geen bruikbare actieve OefenHub-rolcontext hebben.

Deze situatie kan ontstaan:

  • na provisioning;
  • wanneer nog geen rol is toegekend;
  • wanneer alleen inactieve rollen bestaan;
  • wanneer de accountcontext nog niet volledig is;
  • wanneer aanvullende profiel- of niveaucontext nodig is.

De frontpage zonder actieve rol is een beperkte, veilige context.

Deze pagina mag:

  • uitleggen dat nog geen volledige rolcontext beschikbaar is;
  • verwijzen naar profiel, verplichte vervolgstap of contactroute;
  • algemene systeemnotificaties voor ingelogde gebruikers tonen na paginaload;
  • publieke of no-role content tonen waar toegestaan.

Deze pagina mag niet:

  • rolgebonden functies tonen;
  • categorieën of oefeningen tonen;
  • leerling-, docent-, ouder-/voogd- of beheerinformatie tonen;
  • een willekeurige rol of niveaucontext kiezen;
  • oude clientstate gebruiken om alsnog een rolfrontpage te tonen.

4.8 Leerling-frontpage

De leerling-frontpage is de primaire landingspagina voor oefenen.

Deze frontpage gebruikt:

  • actieve leerlingrol;
  • actieve accountstatus;
  • geldige leerlingcontext;
  • actieve niveaucontext;
  • actuele oefentoegang;
  • toegankelijke categorieën en oefeningen;
  • afgeronde en niet-afgeronde oefenruns;
  • leerlinggerichte contentblokken.

De leerling-frontpage is geen tweede autorisatiebron. Iedere vervolgroute naar categorie, oefening, geschiedenis, resultaatdetail of hervatten controleert opnieuw server-side de actuele toegang.

4.8.1 Functionele blokken

BlokBetekenis
Intro / welkomLeerlinggerichte uitleg of starttekst, beheerbaar via frontpagecontent waar ondersteund.
CategorienavigatieToegankelijke categorieën binnen actuele niveaucontext.
Verder oefenenAlleen zichtbaar wanneer een hervatbare niet-afgeronde run binnen de actuele context bestaat.
Populaire categorieën en oefeningenAfgeleid uit afgeronde runs en actuele toegankelijke leerlingcontext.
Recent geoefendMaximaal de drie laatst afgeronde oefeningen binnen de relevante leerling- en niveaucontext.
StatistiekenDynamische totalen, verdelingen en voortgangswaarden op basis van afgeronde runs.
Lege toestand geen docent / geen toegangInformatieve toestand wanneer geen docentautorisatie of geen toegankelijke oefening beschikbaar is.

4.8.2 Leerlingregels

Voor de leerling-frontpage gelden aanvullend:

  • OefenHub kiest niet stilzwijgend een willekeurig standaardniveau wanneer een verplichte niveaucontext ontbreekt.
  • Categorieën en oefeningen worden alleen getoond wanneer zij actueel toegankelijk zijn.
  • Historische resultaten geven niet automatisch actuele start- of hervattoegang.
  • Niet-afgeronde runs tellen niet als afgeronde resultaten.
  • Tijdens een actieve oefening worden afleidende signalen zoals badges en notificatie-overlays niet opdringerig getoond.
  • De frontpage zelf start geen oefenrun zonder bewuste vervolgactie.

4.9 Docent-frontpage

De docent-frontpage is een rustige overzichtspagina voor de docentcontext.

Deze frontpage toont compacte samenvattingsblokken en vaste routes, maar voert geen diepe beheeracties uit.

De docent-frontpage gebruikt onder meer:

  • actieve docentrol;
  • docentcontext;
  • docent-leerlingrelaties;
  • docentniveaus;
  • niveauautorisaties;
  • categorie- en oefenstructuur;
  • collaboratorcontext waar relevant;
  • openstaande uitnodigingen;
  • contentblokken voor docentfrontpage.

4.9.1 Functionele blokken

BlokBetekenis
IntroblokDocentgerichte uitleg en oriëntatie.
LeerlingenoverzichtCompacte kerncijfers rond gekoppelde leerlingen, autorisaties en openstaande uitnodigingen.
Niveaus & inhoudCompacte kerncijfers rond niveaus, categorieën, actieve oefeningen en oefeningen in onderhoud.

De docent-frontpage bevat bewust geen realtime onlineblok en geen leerlinglijst. Online leerlingen, live meekijken, leerlingdetails, geschiedenis, autorisaties en oefenconfiguratie blijven bereikbaar via de daarvoor bedoelde routes.

4.9.2 Docentregels

Voor de docent-frontpage gelden aanvullend:

  • de frontpage is read-only voor domeindata;
  • leerlingdetails worden niet rechtstreeks op de frontpage geopend zonder vervolgroute;
  • tellerwaarden zijn afgeleid uit docentcontext;
  • docent- en ouder-/voogdcontext blijven bij combinatierollen functioneel gescheiden;
  • clientstate mag geen docentcontext afdwingen;
  • systeemnotificaties worden pas na normale frontpageload beoordeeld.

4.10 Ouder-/voogd-frontpage

De ouder-/voogd-frontpage geeft een compacte samenvatting van gekoppelde kinderen en resultaten.

Deze frontpage gebruikt onder meer:

  • actieve ouder-/voogdrol;
  • actieve GuardianStudent-relaties;
  • gekoppelde kinderen;
  • afgeronde oefenruns;
  • resultaat- en geschiedenisreadmodels;
  • ouder-/voogdgerichte contentblokken;
  • relevante systeemnotificaties na paginaload.

4.10.1 Functionele blokken

BlokBetekenis
IntroblokOuder-/voogdgerichte uitleg en oriëntatie.
KinderenoverzichtCompacte samenvatting van actief gekoppelde kinderen.
ResultatensamenvattingSamenvatting van afgeronde resultaten van actief gekoppelde kinderen.
VerwijzingenRoutes naar Kinderen, Geschiedenis en Online.

4.10.2 Ouder-/voogdregels

Voor de ouder-/voogd-frontpage gelden aanvullend:

  • alleen actieve ouder-/voogdrelaties tellen mee;
  • beëindigde relaties, verlopen uitnodigingen en pending uitnodigingen tellen niet als actieve kindrelatie;
  • resultaten worden alleen getoond voor actief gekoppelde kinderen;
  • niet-afgeronde runs en docenttestruns tellen niet mee als afgeronde kindresultaten;
  • een ouder/voogd kan geen oefening namens een kind starten, hervatten, beantwoorden, corrigeren, opnieuw maken of delen;
  • kinddetails, geschiedenis, resultaatdetails, PDF-export en live meekijken blijven vervolgflows na objectselectie.

4.11 Beheerder-frontpage

De beheerder-frontpage is een overzichts- en oriëntatiepagina voor centrale beheercontext.

Deze frontpage bevat minimaal:

  • introblok;
  • attentieblok;
  • contentbeheerblok;
  • accounts-en-rollenblok;
  • recente beheerwijzigingen.

De beheerder-frontpage is geen werkpagina voor inhoudelijke beheerwijzigingen. Diepere beheeracties lopen via Site Instellingen, Content, Accounts beheren en onderliggende beheerpagina’s.

4.11.1 Functionele blokken

BlokBetekenis
IntroblokBeheerdergerichte uitleg en oriëntatie.
Vandaag extra aandachtDirect relevante beheerindicatoren zoals modules in onderhoud, beheerders, meldingen en actieve notificaties.
ContentbeheerSamenvatting van actieve categorieën, modules, niveaus en oefeningen.
Accounts & rollenSamenvatting van actieve accounts en rolverdeling.
Recente beheerwijzigingenCompacte read-only lijst van recente centrale beheeracties.

4.11.2 Beheerderregels

Voor de beheerder-frontpage gelden aanvullend:

  • de beheercontext wordt server-side bepaald;
  • de frontpage voert geen inhoudelijke beheerwijziging uit;
  • recente wijzigingen zijn compacte auditinformatie en vervangen geen detailhistorie per domein;
  • tellerwaarden zijn read-only en afgeleid;
  • het attentieblok toont signalen, maar voert geen automatische correcties uit;
  • beheerderfrontpage en gecombineerde frontpages zijn geen vrije pagebuilder.

4.12 Gecombineerde frontpages

Gebruikers kunnen de rollen Ouder/voogd, Docent en Beheerder combineren. De rol Leerling is niet combineerbaar met deze rollen.

Voor combinatierollen wordt de frontpage runtime samengesteld uit basiscontexten.

Er bestaat geen aparte persistente frontpageconfiguratie per rolcombinatie.

De vaste prioriteit is:

  1. Beheerder;
  2. Docent;
  3. Ouder/voogd.

4.12.1 Docent + ouder/voogd

Wanneer een gebruiker zowel Docent als Ouder/voogd is:

  1. wordt één gezamenlijk introblok getoond;
  2. volgen eerst docentblokken;
  3. volgen daarna ouder-/voogdblokken.

Docentcontext en ouder-/voogdcontext blijven functioneel gescheiden.

4.12.2 Beheerder + docent en/of ouder/voogd

Wanneer een gebruiker ook Beheerder is:

  1. worden eerst beheerderblokken getoond;
  2. daarna docentblokken;
  3. daarna ouder-/voogdblokken.

De beheerdercontext verruimt de normale docent- of ouder-/voogdcontext niet. Binnen ieder blok gelden de eigen domeinregels.

4.12.3 Geen gemengde autorisatie

Gecombineerde frontpages mengen geen autorisaties.

Voorbeelden:

  • docentblokken geven geen ouder-/voogdrecht;
  • ouder-/voogdblokken geven geen docentresultaatrecht;
  • beheerderblokken geven geen live-meekijkrecht;
  • zichtbare gecombineerde blokken zijn geen bewijs dat detailroutes toegankelijk zijn;
  • iedere vervolgroute voert opnieuw server-side contextcontrole uit.

4.13 Tellers en samenvattingswaarden

Tellers en samenvattingswaarden zijn afgeleid uit brondata of readmodels.

Per teller moet minimaal bekend zijn:

AspectVraag
DomeinobjectWelk object of welke objecten worden geteld?
StatusfilterWelke statussen tellen mee?
ActiviteitsfilterTellen inactieve, verwijderde, verlopen of soft-deleted records mee?
TijdvensterGeldt er een periode, bijvoorbeeld vandaag, deze week of recente wijzigingen?
RolcontextWelke rolcontext begrenst de telling?
RelatiecontextWelke relatie of koppeling is vereist?
ObjectscopeGaat het om eigen objecten, gekoppelde objecten of centrale objecten?
Distinct-logicaMoet uniek worden geteld of tellen dubbele koppelingen mee?
TestdataTellen testmodules, docenttestruns of testzichtbare records mee?
AutorisatieWordt de teller alleen opgebouwd uit data die de gebruiker mag zien?

Mockupwaarden zijn voorbeelddata. Zij zijn geen definitieve productieaantallen.

4.14 Systeemnotificaties op frontpages

Systeemnotificaties worden na normale frontpageload beoordeeld.

Voor frontpages geldt:

  • de frontpage laadt eerst;
  • daarna controleert de applicatie of een systeemnotificatie relevant en actief is;
  • maximaal één systeemnotificatie wordt tegelijk getoond;
  • bij meerdere relevante notificaties wordt de oudste aangemaakte relevante notificatie eerst getoond;
  • na sluiten kan een volgende relevante notificatie worden beoordeeld;
  • notificaties blokkeren geen frontpagecontextbepaling;
  • notificaties zijn geen mailbox-systeemberichten;
  • notificaties zijn geen popupregister-popups;
  • notificaties wijzigen geen frontpagedata.

Tijdens een actieve leerling-oefening worden systeemnotificaties niet boven de oefening geplaatst.

4.15 Lege toestanden

Lege toestanden zijn normale toestanden wanneer de gebruiker wel toegang heeft tot een frontpage maar er geen relevante data beschikbaar is.

Voorbeelden:

  • leerling heeft geen toegankelijke oefeningen;
  • leerling heeft geen recent geoefende afgeronde runs;
  • leerling heeft geen hervatbare run;
  • docent heeft nog geen gekoppelde leerlingen;
  • docent heeft nog geen actieve niveaus;
  • ouder/voogd heeft nog geen gekoppelde kinderen;
  • beheerder heeft geen recente beheerwijzigingen;
  • er zijn geen actieve systeemnotificaties.

Een lege toestand mag informatief zijn en naar een passende vervolgstap verwijzen, maar mag geen verborgen autorisatie- of foutdetails lekken.

4.16 Fouttoestanden

Fouttoestanden ontstaan wanneer de frontpagecontext niet veilig bepaald of opgebouwd kan worden.

Voorbeelden:

  • gebruiker heeft geen actieve accountstatus;
  • rolcontext ontbreekt of is ongeldig;
  • verplichte niveaucontext ontbreekt;
  • contextquery faalt technisch;
  • readmodelopbouw faalt;
  • frontpagecontent kan niet veilig geladen worden;
  • tellerdefinitie of statusfilter is inconsistent;
  • routecontext wordt gemanipuleerd;
  • gebruiker probeert een gecombineerde context als persistente beheerconfiguratie op te slaan.

Bij fouttoestanden toont OefenHub een veilige melding of redirect zonder technische details, tokens, stacktraces of gevoelige data.

4.17 Relatie tot andere FO-hoofdstukken

HoofdstukRelatie
Rollen, context en autorisatieBepaalt welke rolcontext en combinatierolcontext geldig is.
Applicatieschil, header, footer en navigatieBepaalt header, menu’s, badges en footer rondom frontpages.
Account, profiel en voorkeurenBepaalt no-role, verplichte profiel- en niveaucontext.
Contentbeheer, vaste pagina’s en footerBeschrijft beheer van frontpagecontent en contentblokken.
Popups, templates, features en systeemnotificatiesBeschrijft systeemnotificaties en displayregels.
Schermlaag en UX-specificatiesBeschrijft schermdocumentatie, UX-principes, read-only gedrag en lege toestanden.

4.18 Gerelateerde bronverwijzingen

BronLink
Technisch Ontwerp — rolflowsRollenflows technisch
Technisch Ontwerp — readmodels en tellersReadmodels, tellers, badges, caching en materialisatie
Technisch Ontwerp — frontend BlazorFrontend, Blazor, routing, state en componentopbouw
Usecases — beheerder frontpage en contextBeheerder — frontpage en context
UC-BEH-FP-001 — Beheerder-frontpage bekijkenBeheerder-frontpage bekijken
UC-BEH-FP-002 — Beheercontext bepalenBeheercontext bepalen
UC-BEH-FP-003 — Beheersamenvattingen tonenBeheersamenvattingen tonen
UC-BEH-FP-004 — Recente beheerwijzigingen tonenRecente beheerwijzigingen tonen
UC-BEH-FP-005 — Gecombineerde beheerder-docent-ouder-frontpage tonenGecombineerde beheerder-docent-ouder-frontpage tonen
Usecases — docent frontpage en contextDocent — frontpage en context
UC-DOC-FP-001 — Docent-frontpage bekijkenDocent-frontpage bekijken
UC-DOC-FP-002 — Docentcontext bepalenDocentcontext bepalen
UC-DOC-FP-003 — Leerlingenoverzichtsamenvatting tonenLeerlingenoverzichtsamenvatting tonen
UC-DOC-FP-004 — Niveaus- en inhoudsamenvatting tonenNiveaus- en inhoudsamenvatting tonen
UC-DOC-FP-005 — Gecombineerde docent-ouder-frontpage tonenGecombineerde docent-ouder-frontpage tonen
Usecases — leerling frontpage en niveaucontextLeerling — frontpage en niveaucontext
UC-LLN-FP-001 — Leerling-frontpage bekijkenLeerling-frontpage bekijken
UC-LLN-FP-002 — Actieve niveaucontext toepassenActieve niveaucontext toepassen
UC-LLN-FP-003 — Populaire categorieën en oefeningen tonenPopulaire categorieën en oefeningen tonen
UC-LLN-FP-004 — Recent geoefend tonenRecent geoefend tonen
UC-LLN-FP-005 — Verder-oefenenblok tonenVerder-oefenenblok tonen
Usecases — ouder/voogd frontpage en contextOuder/voogd — frontpage en context
UC-OVG-FP-001 — Ouder-/voogd-frontpage bekijkenOuder-/voogd-frontpage bekijken
UC-OVG-FP-002 — Ouder-/voogdcontext bepalenOuder-/voogdcontext bepalen
UC-OVG-FP-003 — Kinderenoverzichtsamenvatting tonenKinderenoverzichtsamenvatting tonen
UC-OVG-FP-004 — Resultatenoverzichtsamenvatting tonenResultatenoverzichtsamenvatting tonen
UC-OVG-FP-005 — Gecombineerde docent-ouder-frontpage tonenGecombineerde docent-ouder-frontpage tonen
Usecases — frontpagebeheerFrontpagebeheer
UC-BEH-FRONT-006 — Runtime-samenstelling van gecombineerde frontpage controlerenRuntime-samenstelling van gecombineerde frontpage controleren
Schermdocumentatie — publieke frontpageGeneriek — Niet ingelogd
Schermdocumentatie — beheerder frontpageBeheerder frontpage
Schermdocumentatie — docent frontpageDocent frontpage
Schermdocumentatie — leerling frontpageLeerling frontpage
Schermdocumentatie — leerling frontpage geen docentLeerling frontpage geen docent
Schermdocumentatie — ouder/voogd frontpageOuder/voogd frontpage
Schermdocumentatie — ouder/voogd ook docentOuder/voogd ook docent
Database-informatie — configuratie en contentbeheerConfiguratie en contentbeheer
FO — rollen, context en autorisatieRollen, context en autorisatie
FO — applicatieschil, header, footer en navigatieApplicatieschil, header, footer en navigatie
FO — contentbeheer, vaste pagina’s en footerContentbeheer, vaste pagina’s en footer
FO — popups, templates, features en systeemnotificatiesPopups, templates, features en systeemnotificaties