0. Niet ingelogd
0.1 Schermafbeelding

0.2 Scherm meta data
| Veld | Waarde |
|---|---|
| Scherm-ID | SCH-GEN-00-01 |
| Schermnaam | Niet-ingelogde publieke frontpage |
| Doelgroep / onderdeel | Generiek / publieke frontpage |
| Bronbestand | oefenhub_generiek_00_niet_ingelogd_v1_7.html |
| Mockupversie | V1.7 |
| Screenshotbestand | oefenhub_generiek_00_niet_ingelogd_v1_7.png |
| Processtap / context | Publieke startpagina voor bezoekers zonder geldige OefenHub-sessie. De pagina geeft uitleg over OefenHub en biedt ingangen naar inloggen en registreren. |
| Documentatiestatus | Uitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification, usecases en ondersteunende documentatie. |
| Opmerkingen | Deze frontpage is de publieke /-weergave. De pagina toont geen breadcrumb en geen demo- of no-role-contexttekst. De header, het publieke hamburgermenu, de login-/registratie-ingangen en de footer zijn onderdeel van de publieke paginaschil; generieke componentregels staan ook in 01_schermen-generiek. |
| Route / URL-patroon | / wanneer er geen geldige OefenHub-sessie is. Login en registratie verlopen via applicatieroutes zoals /auth/login en /auth/register, die vervolgens de externe identity provider starten. |
| Autorisatie / vereiste rol-context | Publiek toegankelijk. Er is geen login, account, rolcontext of relatiecontext vereist om de pagina te bekijken. |
| Primair domeinobject / hoofdentiteit | Publieke frontpagecontext Public, frontpagecontent, publieke accountacties en publieke footercontext. |
| Gerelateerde schermen / navigatie | 01_schermen-generiek, 12_over_oefenhub, 13_privacybeleid, 14_contact, beheerder 06_site-instellingen-frontpage tab Niet ingelogd. |
| Data-karakter | Publieke tekstcontent en codegedreven frontpageopbouw. De pagina toont geen gebruikergebonden gegevens, geen oefenresultaten, geen berichten, geen meldingen, geen relatiegegevens en geen beheerinformatie. |
0.3 Functionele beschrijving
Het scherm Niet-ingelogde publieke frontpage is de publieke startpagina van OefenHub. De pagina is bedoeld voor bezoekers die nog geen geldige applicatiesessie hebben. De frontpage legt compact uit wat OefenHub doet, welke gebruiksrollen bestaan en hoe een bezoeker kan starten via inloggen of registreren.
De pagina is geen rolfrontpage, geen detailpagina en geen mutatiescherm voor domeindata. De zichtbare acties starten uitsluitend accounttoegang of navigeren naar publieke informatiepagina's. Persoonlijke of relatiegebonden informatie wordt nooit op deze pagina getoond.
De hoofdinhoud bestaat uit:
- een publiek introblok met titel, introductietekst en acties Inloggen en Registreren;
- een samenvattingskaart Wat brengt OefenHub samen?;
- een kaartblok Een omgeving per rol;
- drie rolintroductiekaarten voor Leerling, Docent en Ouder of voogd;
- een uitlegblok Oefenen met structuur;
- een uitlegblok Zelf starten, veilig uitbreiden;
- een afsluitende call-to-action Klaar om te starten?;
- een publieke footer met algemene informatie- en startlinks.
0.3.1 Publieke context
De publieke frontpage wordt getoond wanneer er geen geldige OefenHub-sessie bestaat. Een geldige of ongeldige browserwaarde, oude routegeschiedenis of clientstate mag deze pagina niet als ingelogde of rolgebonden frontpage laten renderen.
Wanneer een gebruiker al een geldige sessie heeft, bepaalt de server-side account- en rolcontext welke frontpagevariant wordt getoond. De publieke frontpage is dus niet de plek waar no-role-onboarding, profielaanvulling, rolwisseling of rolgerichte dashboards worden afgehandeld.
0.3.2 Login en registratie
De acties Inloggen en Registreren starten geen lokaal wachtwoordformulier binnen OefenHub. Zij navigeren naar applicatieroutes die de externe identity-providerflow starten. OefenHub verwerkt daarna alleen de callback, accountprovisioning, sessiecontext en vervolgroute.
Voor login- en registratieroutes geldt dat de link als volledige documentnavigatie moet werken. Een Blazor client-side routewissel die alleen de URL aanpast zonder de server-side challenge te starten is niet toegestaan.
De registratieactie wordt alleen als reguliere actie aangeboden wanneer publieke registratie functioneel beschikbaar is. Wanneer registratie sitebreed of via de identity provider niet beschikbaar is, toont de pagina geen dode route of witte pagina; de registratieactie wordt verborgen of vervangen door een nette, traceerbare niet-beschikbaarafhandeling.
0.3.3 Rolintroductie zonder roltoekenning
De drie rolkaarten zijn informatief. Zij kennen geen rol toe en openen geen rolgebonden context. De daadwerkelijke rolkeuze of rolcontextbepaling vindt pas plaats na authenticatie, provisioning en server-side sessieverwerking.
De kaart Leerling beschrijft zelfstandig oefenen binnen vakken en categorieën. Er is geen sprake van subcategorieën op deze publieke frontpage.
De kaart Docent beschrijft begeleiden, differentiëren en oefeningen klaarzetten binnen bestaande oefenvormen. De tekst mag uitleggen dat docenten oefensets kunnen klaarzetten voor één leerling, een selectie leerlingen of een groep, en dat dit gebeurt via configuratie binnen bestaande oefentypes.
De kaart Ouder of voogd beschrijft betrokken meekijken op basis van een geldige relatie met een leerling. De publieke frontpage geeft hiermee geen inzage en suggereert niet dat ouder-/voogddata zonder relatiecontext beschikbaar is.
0.3.4 Beheerbare content en codegedreven structuur
De tekstuele inhoud van frontpageblokken kan via frontpagecontent worden beheerd waar dat functioneel is voorzien. De structurele paginaopbouw, blokvolgorde, componenttypen, responsive regels, routebestemmingen en autorisatieregels blijven codegedreven.
De publieke frontpage is geen vrije pagebuilder. Beheerbare tekst mag de functie van knoppen, de betekenis van rolcontexten, de zichtbare datasets of de onderliggende autorisatie niet wijzigen.
0.3.5 Publieke header en menu
De header toont het OefenHub-logo en het publieke hamburgermenu. Het logo is een ingang naar /. Omdat de gebruiker niet is ingelogd, wordt geen profielavatar, profielmenu, berichteningang of rolgebonden navigatie getoond.
Het publieke menu bevat in ieder geval:
- Inloggen;
- Registreren, wanneer registratie beschikbaar is;
- Over OefenHub;
- Privacybeleid.
Het menu heeft een visuele koppeling met het hamburgericoon, bijvoorbeeld via een driehoek/pijltje. De exacte CSS-uitlijning hoort bij de componentstijl, maar het menu moet zichtbaar als bijbehorende dropdown worden ervaren.
0.3.6 Footer
De footer toont publieke informatie- en startlinks. De footer mag verwijzen naar algemene pagina's zoals Over OefenHub, Contact en Privacybeleid en naar login/registratie wanneer die acties beschikbaar zijn.
De footer toont geen rolgebonden snelkoppelingen, geen gebruikersnaam, geen accountstatus en geen persoonlijke context.
0.3.7 Responsief gedrag
Bij voldoende breedte staan het introblok en de samenvattingskaart naast elkaar. De actieknoppen in het introblok worden onderin de linkerkolom uitgelijnd zodat zij visueel aansluiten bij de hoogte van de kaart rechts.
De drie rolkaarten staan bij voldoende breedte naast elkaar en stapelen bij smallere breedtes onder elkaar. De twee uitlegkaarten staan bij voldoende breedte naast elkaar en stapelen bij smallere breedtes onder elkaar. De pagina moet zonder horizontaal scrollen bruikbaar blijven op de ondersteunde desktop- en tabletweergaven.
0.3.8 Interactie en hovergedrag
Primaire en secundaire knoppen hebben een duidelijke hover- en focusweergave. De achtergrond van de knop verandert zichtbaar wanneer de gebruiker eroverheen beweegt of de knop via toetsenbordfocus bereikt. Dit geldt voor de knoppen in het introblok, de call-to-action en eventuele publieke startlinks die als knop worden weergegeven.
Hover- en focusstates zijn presentatiehulp en geven geen extra autorisatie of routegarantie. De server-side route blijft bepalend.
0.4 UI-elementen en velddefinities
| Element-ID | Type | GUI-verwijzing | Omschrijving | Zichtbaar label | Opmerking | Technische naam |
|---|---|---|---|---|---|---|
| SCH-GEN-00-01-S01 | S | Paginaschil | Publieke frontpagecontainer voor de niet-ingelogde /-weergave. | Niet-ingelogde publieke frontpage | Geen breadcrumb en geen demo-contextlabel. | PublicFrontpageShell |
| SCH-GEN-00-01-H01 | A | Header — logo | Logo en home-ingang naar de publieke frontpage. | OefenHub | Logo gebruikt gedeelde logostijl en geen lokaal nagebouwde asset. | PublicHomeLogoLink |
| SCH-GEN-00-01-H02 | A | Header — hamburgermenu | Publiek menu voor accountacties en vaste informatiepagina's. | ☰ | Alleen publieke menu-items; geen profielmenu of berichteningang. | PublicMenuTrigger |
| SCH-GEN-00-01-H03 | A | Publiek menu — inloggen | Menuactie die de loginflow start. | Inloggen | Volledige documentnavigatie naar de loginroute. | PublicLoginMenuLink |
| SCH-GEN-00-01-H04 | A | Publiek menu — registreren | Menuactie die de registratieflow start wanneer beschikbaar. | Registreren | Alleen tonen wanneer registratie beschikbaar is. | PublicRegisterMenuLink |
| SCH-GEN-00-01-S02 | S | Introblok | Eerste inhoudsblok met titel, introductietekst en startacties. | Oefenen, herhalen en begeleiden op één plek | Titel en tekst kunnen contentgedreven zijn; layout blijft codegedreven. | PublicFrontpageHeroSection |
| SCH-GEN-00-01-F01 | F | Introblok — titel | Hoofdtitel van de publieke frontpage. | Oefenen, herhalen en begeleiden op één plek | Beheerbare titel waar frontpagecontent dit ondersteunt. | PublicFrontpageHeroTitle |
| SCH-GEN-00-01-F02 | F | Introblok — tekst | Introductietekst over oefenen, begeleiden en meekijken. | OefenHub helpt leerlingen om schoolvakken stap voor stap te oefenen... | Geen persoonlijke of rolgebonden data. | PublicFrontpageHeroText |
| SCH-GEN-00-01-B01 | B | Introblok — inloggen | Primaire actie om de loginflow te starten. | Inloggen | Start accounttoegang via /auth/login of equivalente authroute. | PublicFrontpageLoginButton |
| SCH-GEN-00-01-B02 | B | Introblok — registreren | Secundaire actie om registratie te starten. | Registreren | Alleen functioneel wanneer registratie beschikbaar is. | PublicFrontpageRegisterButton |
| SCH-GEN-00-01-S03 | S | Samenvattingskaart | Kaart met korte uitleg wat OefenHub samenbrengt. | Wat brengt OefenHub samen? | Publieke uitleg, geen runtimegebruikersdata. | PublicFrontpageSummaryCard |
| SCH-GEN-00-01-S04 | S | Rolintroductieblok | Inhoudsblok dat de rolcontexten op hoofdlijnen uitlegt. | Een omgeving per rol | Informatief; kent geen rollen toe. | PublicRoleIntroSection |
| SCH-GEN-00-01-S05 | S | Leerlingkaart | Rolkaart voor zelfstandig oefenen. | Leerling | Benoemt vakken en categorieën, niet subcategorieën. | PublicStudentRoleCard |
| SCH-GEN-00-01-S06 | S | Docentkaart | Rolkaart voor begeleiden en oefensets klaarzetten. | Docent | Benoemt configuratie binnen bestaande oefentypes. | PublicTeacherRoleCard |
| SCH-GEN-00-01-S07 | S | Ouder-/voogdkaart | Rolkaart voor relatiegebonden meekijken. | Ouder of voogd | Benoemt geldige relatiecontext als voorwaarde voor inzage. | PublicGuardianRoleCard |
| SCH-GEN-00-01-S08 | S | Uitlegkaart links | Uitleg over structuur van oefeningen. | Oefenen met structuur | Publieke uitleg over niveau, categorie en oefenvorm. | PublicPracticeStructureCard |
| SCH-GEN-00-01-S09 | S | Uitlegkaart rechts | Uitleg over zelf starten en rolgericht uitbreiden. | Zelf starten, veilig uitbreiden | Benoemt rollen zonder beheerrollen of interne beheercontext te introduceren. | PublicRoleGrowthCard |
| SCH-GEN-00-01-S10 | S | Call-to-action | Afsluitend startblok met login- en registratieacties. | Klaar om te starten? | Acties volgen dezelfde beschikbaarheids- en navigatieregels als bovenaan. | PublicFrontpageCallToAction |
| SCH-GEN-00-01-S11 | S | Footer | Publieke footer met algemene links en startlinks. | OefenHub / Handige links / Starten | Geen rolgebonden snelkoppelingen of persoonlijke data. | PublicFooterSection |
0.5 Waardelagen
| Element-ID | GUI-verwijzing | Zichtbaar label | Technische naam | Databron | Waardebron | Datatype | Bewerkbaar | Validatie / regel |
|---|---|---|---|---|---|---|---|---|
| SCH-GEN-00-01-S01 | Paginaschil | Niet-ingelogde publieke frontpage | PublicFrontpageShell | Routering + sessiecontext | Server-side vaststelling dat geen geldige OefenHub-sessie bestaat | Composite | Nee | Mag geen ingelogde of rolgebonden context renderen op basis van clientstate. |
| SCH-GEN-00-01-H01 | Header — logo | OefenHub | PublicHomeLogoLink | Gedeelde shellconfiguratie | Statische asset / gedeelde logostijl | Navigation/action | Nee | Verwijst naar /; geen lokale kopie van het logo in de pagina opnemen. |
| SCH-GEN-00-01-H02 | Header — hamburgermenu | ☰ | PublicMenuTrigger | Shellnavigatie | Publieke menuconfiguratie | Navigation/composite | Nee | Toont alleen publieke menu-items. |
| SCH-GEN-00-01-H03 | Publiek menu — inloggen | Inloggen | PublicLoginMenuLink | Authconfiguratie | Applicatieroute naar loginchallenge | Action/link | Nee | Moet volledige documentnavigatie starten en geen dode client-side route zijn. |
| SCH-GEN-00-01-H04 | Publiek menu — registreren | Registreren | PublicRegisterMenuLink | Authconfiguratie + registratiebeschikbaarheid | Applicatieroute naar registratiechallenge | Action/link | Nee | Alleen tonen of activeren wanneer registratie beschikbaar is. |
| SCH-GEN-00-01-F01 | Introblok — titel | Oefenen, herhalen en begeleiden op één plek | PublicFrontpageHeroTitle | ContentBlocks DomainType = FrontPage, ContextType = Public, codevaste ReferenceKey | Database / beheerbare frontpagecontent | String | Ja, via beheer | Titel veilig renderen; layout en componenttype blijven codegedreven. |
| SCH-GEN-00-01-F02 | Introblok — tekst | OefenHub helpt leerlingen om schoolvakken stap voor stap te oefenen... | PublicFrontpageHeroText | ContentBlocks DomainType = FrontPage, ContextType = Public, codevaste ReferenceKey | Database / beheerbare frontpagecontent | Rich text light / tekst | Ja, via beheer | Geen actieve HTML of JavaScript; geen persoonsgegevens of rolgebonden data. |
| SCH-GEN-00-01-B01 | Introblok — inloggen | Inloggen | PublicFrontpageLoginButton | Authconfiguratie | Applicatieroute naar loginchallenge | Action/link | Nee | Start loginflow via identity provider. |
| SCH-GEN-00-01-B02 | Introblok — registreren | Registreren | PublicFrontpageRegisterButton | Authconfiguratie + registratiebeschikbaarheid | Applicatieroute naar registratiechallenge | Action/link | Nee | Niet tonen als registratie niet beschikbaar is. |
| SCH-GEN-00-01-S03 | Samenvattingskaart | Wat brengt OefenHub samen? | PublicFrontpageSummaryCard | Frontpagecontent + codevaste structuur | Database / beheerbare tekst waar ondersteund | Composite | Ja, tekstueel waar ondersteund | Kaart toont algemene uitleg en geen runtimegebruikersdata. |
| SCH-GEN-00-01-S04 | Rolintroductieblok | Een omgeving per rol | PublicRoleIntroSection | Frontpagecontent + codevaste structuur | Database / beheerbare tekst waar ondersteund | Composite | Ja, tekstueel waar ondersteund | Informatieve roltekst; geen roltoekenning of autorisatie-effect. |
| SCH-GEN-00-01-S05 | Leerlingkaart | Leerling | PublicStudentRoleCard | Frontpagecontent + codevaste structuur | Database / beheerbare tekst waar ondersteund | Composite | Ja, tekstueel waar ondersteund | Mag geen leerlingdata tonen en noemt geen subcategorieën. |
| SCH-GEN-00-01-S06 | Docentkaart | Docent | PublicTeacherRoleCard | Frontpagecontent + codevaste structuur | Database / beheerbare tekst waar ondersteund | Composite | Ja, tekstueel waar ondersteund | Mag uitleggen dat oefensets via configuratie binnen bestaande oefentypes worden klaargezet. |
| SCH-GEN-00-01-S07 | Ouder-/voogdkaart | Ouder of voogd | PublicGuardianRoleCard | Frontpagecontent + codevaste structuur | Database / beheerbare tekst waar ondersteund | Composite | Ja, tekstueel waar ondersteund | Mag geen kind- of relatiegegevens tonen; inzage altijd relatiegebonden formuleren. |
| SCH-GEN-00-01-S08 | Uitlegkaart links | Oefenen met structuur | PublicPracticeStructureCard | Frontpagecontent + codevaste structuur | Database / beheerbare tekst waar ondersteund | Composite | Ja, tekstueel waar ondersteund | Algemene uitleg over categorie, niveau en oefenvorm; geen catalogusdata laden. |
| SCH-GEN-00-01-S09 | Uitlegkaart rechts | Zelf starten, veilig uitbreiden | PublicRoleGrowthCard | Frontpagecontent + codevaste structuur | Database / beheerbare tekst waar ondersteund | Composite | Ja, tekstueel waar ondersteund | Benoemt rollen algemeen en introduceert geen beheerrol of beheercontext. |
| SCH-GEN-00-01-S10 | Call-to-action | Klaar om te starten? | PublicFrontpageCallToAction | Frontpagecontent + authconfiguratie | Database / beheerbare tekst waar ondersteund | Composite | Ja, tekstueel waar ondersteund | Login en registratie volgen dezelfde route- en beschikbaarheidsregels als bovenaan. |
| SCH-GEN-00-01-S11 | Footer | OefenHub / Handige links / Starten | PublicFooterSection | Footercontent + footerlinks | Admin/contentcontracten of codevaste fallbackregels | Composite | Ja, via footer/contentbeheer | Alleen publieke links en startacties tonen; geen persoonlijke of rolgebonden snelkoppelingen. |
0.6 Schermtrace naar SRS en acceptatiecriteria
De onderstaande tabel legt per schermrequirement de koppeling naar het centrale schermrequirements-trace-register, SRS-requirements en acceptatiecriteria vast. De normatieve requirementtekst staat in de SRS; dit schermdocument beschrijft alleen de lokale schermcontext.
Deze tabel bevat alleen schermtraceability. De normatieve requirementtekst en acceptatiecriteria staan centraal in de SRS.
| Schermrequirement | Dekt | Schermcontext |
|---|---|---|
REQ-SCH-GEN-00-01-01 | SRS-AUTH-001 AC-AUTH-001 | De publieke frontpage moet zonder login bereikbaar zijn wanneer er geen geldige OefenHub-sessie bestaat. |
REQ-SCH-GEN-00-01-02 | SRS-AUTH-001 SRS-NFR-PRV-001 AC-AUTH-001 AC-NFR-PRV-001 | De publieke frontpage mag geen persoonlijke, relatiegebonden, rolgebonden of beheerdata tonen. |
REQ-SCH-GEN-00-01-03 | SRS-CNT-001 AC-CNT-001 | De publieke frontpage toont geen breadcrumb en geen demo- of no-role-labels. |
REQ-SCH-GEN-00-01-04 | SRS-CNT-001 AC-CNT-001 | De header gebruikt het gedeelde OefenHub-logo en een publiek hamburgermenu zonder profielavatar of berichteningang. |
REQ-SCH-GEN-00-01-05 | SRS-ACC-002 AC-ACC-002 | De actie Inloggen start de externe loginflow via een applicatieroute en mag niet als dode client-side route eindigen. |
REQ-SCH-GEN-00-01-06 | SRS-ACC-001 AC-ACC-001 | De actie Registreren wordt alleen als reguliere actie aangeboden wanneer registratie beschikbaar is en start dan de registratieflow via de identity provider. |
REQ-SCH-GEN-00-01-07 | SRS-CNT-001 AC-CNT-001 | Een introblok tonen met titel, introductietekst en startacties voor inloggen en registreren. |
REQ-SCH-GEN-00-01-08 | SRS-CNT-001 AC-CNT-001 | Een samenvattingskaart kunnen tonen met algemene uitleg over oefenen, begeleiden en relatiegebonden inzage. |
REQ-SCH-GEN-00-01-09 | SRS-AUTH-001 SRS-AUTH-003 AC-AUTH-001 AC-AUTH-003 | De rolintroductie moet leerling, docent en ouder/voogd informatief beschrijven zonder rollen toe te kennen of rolgebonden rechten te activeren. |
REQ-SCH-GEN-00-01-10 | SRS-CNT-001 AC-CNT-001 | De leerlingkaart gebruikt de begrippen vakken, categorieën, niveau en oefenvorm en introduceert geen subcategorieën. |
REQ-SCH-GEN-00-01-11 | SRS-CNT-001 AC-CNT-001 | De docentkaart kan uitleggen dat docenten oefensets klaarzetten via configuratie binnen bestaande oefentypes. |
REQ-SCH-GEN-00-01-12 | SRS-AUTH-001 SRS-AUTH-004 AC-AUTH-001 AC-AUTH-004 | De ouder-/voogdkaart formuleert inzage altijd als relatiegebonden en toont geen kind- of relatiegegevens. |
REQ-SCH-GEN-00-01-13 | SRS-CNT-001 AC-CNT-001 | Uitlegkaarten over structuur, rollen en veilige uitbreiding kunnen worden getoond zonder runtimecatalogus- of gebruikersdata te laden. |
REQ-SCH-GEN-00-01-14 | SRS-CNT-001 AC-CNT-001 | Tekstuele publieke frontpagecontent kan beheerbaar zijn via ContentBlocks met DomainType = FrontPage en ContextType = Public, terwijl structuur en routes codegedreven blijven. |
REQ-SCH-GEN-00-01-15 | SRS-CNT-001 AC-CNT-001 | De publieke frontpage mag niet als vrije pagebuilder werken en mag geen layout-, route- of componentwijzigingen uit content afleiden. |
REQ-SCH-GEN-00-01-16 | SRS-CNT-001 AC-CNT-001 | Call-to-action-knoppen en publieke startlinks hebben duidelijke hover- en focusstates. |
REQ-SCH-GEN-00-01-17 | SRS-CNT-002 AC-CNT-002 | De footer toont publieke informatie- en startlinks zonder persoonlijke of rolgebonden snelkoppelingen. |
REQ-SCH-GEN-00-01-18 | SRS-CNT-001 AC-CNT-001 | De pagina blijft responsief bruikbaar op de ondersteunde desktop- en tabletweergaven zonder horizontaal scrollen. |
0.7 Technische koppeling
Voor technische uitwerking zijn vooral relevant:
- 04 Identiteit, authenticatie en rolcontext voor login, registratie, provisioning, sessiecontext en rolcontextbepaling.
- 05 Autorisatie, policies en server-side contextcontrole voor het uitgangspunt dat zichtbare routes en knoppen geen autorisatiebewijs zijn.
- 11 Rolflows technisch voor rolcontexten, gecombineerde contexten en frontpagecontexten.
- 16 Contentbeheer, vaste pagina’s en footer voor beheerbare frontpagecontent, footerlinks en contentblokken.
- 24 Frontend, Blazor, routing, state en componentopbouw voor publieke layout, routecategorieën, componentopbouw, documentnavigatie en responsive gedrag.
- 25 Privacy, retentie, anonimisering en gegevensbescherming voor het voorkomen van persoonlijke of relatiegebonden data op publieke schermen.