September 2025
Maandag 1 september 2025
- Uitleg gekregen over de opleiding en kennismaking met iedereen.
- Foto gemaakt.
- Eerste visitekaartje ontworpen.
Dinsdag 2 september 2025
- College gevolgd over CSS.
- Geleerd hoe CSS werkt en hoe ik het kan toepassen.
Woensdag 3 september 2025
- Nieuwe schetsen gemaakt en ideeën uitgewerkt.
- Een ander visitekaartje ontworpen en aangepast.
Donderdag 4 september 2025
- Cursus JavaScript gevolgd.
- Eerste JavaScript toegepast op mijn site.
- Mijn site afgerond.
Vrijdag 5 september 2025
- Mijn code laten zien en feedback gekregen.
- Zelf ook code van anderen gereviewd.
- Tweedejaars kwamen langs om ons werk te bekijken.
Maandag 8 september 2025
- We zijn in groepen gezet.
- Een eerste schets gemaakt voor de squadpage.
Dinsdag 9 september 2025
- Uitleg gekregen over CSS Grid.
- Geoefend met Grid en de basis toegepast.
Daily Checkout
- Verschil Flexbox / Grid: Flexbox = één richting, Grid = twee richtingen.
- Default layout: block of inline flow layout.
- Welke layout modes gebruik ik? Grid voor structuur, Flex voor componenten.
Woensdag 10 september 2025
- Workshop responsive design gevolgd.
- Breakdownschets gemaakt voor responsive design.
Donderdag 11 september 2025
- Learning Programming gehad.
- Geoefend met JavaScript.
Vrijdag 12 september 2025
- HTML code review gedaan.
- Feedback gekregen over semantische HTML.
- Eigen code laten reviewen.
Maandag 15 september 2025
- Nieuwe decaan gesproken.
- Hoe je werk toevoegt aan Portflow besproken.
- Visuele hiërarchie behandeld.
Dinsdag 16 september 2025
- Nieuwe breakdownschets gemaakt.
- Figma ontwerpen uitgewerkt.
- Ontwerp gekozen.
Woensdag 17 september 2025
- Readme-pagina gemaakt.
- Geleerd waarom samenwerken aan één pagina niet efficiënt is.
Dinsdag 23 september 2025
- College over prototyping gevolgd.
- Geleerd dat schetsen ook communicatie zijn.
- Tips gekregen: tekst eerst, schaduw, typografie-hiërarchie.
Maandag 29 september 2025
- Herhaling layout-technieken.
- CSS Grid / Flexbox toegepast.
Oktober 2025
Woensdag 1 oktober 2025
- College Breakpoints / Media Queries.
Vrijdag 3 oktober 2025
- Verdieping responsive design.
Maandag 6 oktober 2025
- Workshop codeconventies.
- Coachgesprekken gehad.
Dinsdag 7 oktober 2025
- CSS Challenge: positionering.
- Geleerd hoe relative / absolute / fixed werken.
Woensdag 8 oktober 2025
- Voorbereiding sprint-review.
- Tips gekregen over documentatie.
Donderdag 9 oktober 2025
- Sprint review met opdrachtgever.
- Positieve feedback + verbeterpunten.
Vrijdag 10 oktober 2025
- Retrospect sprint 2.
- Geleerd om beter te plannen en documenteren.
Maandag 13 oktober 2025
- Start sprint.
- Workshop toegankelijkheid.
- Coachgesprek leerdoelen.
Dinsdag 14 oktober 2025
- Kleur contrast challenge.
- WCAG-audit verder uitgewerkt.
Woensdag 15 oktober 2025
- Presentaties WCAG-audit.
- Workshop nette HTML.
- Coachgesprek.
Donderdag 16 oktober 2025
- Kleine HTML-aanpassingen gedaan.
- Website gecontroleerd op toegankelijkheid.
Vrijdag 17 oktober 2025
- Code designreview over toegankelijkheid.
- Lezing Inclusive Design.
- Tribe-activiteit besproken.
Maandag 27 oktober 2025
- Workshop kleur contrast.
- Tools geleerd zoals Lighthouse en contrast checkers.
- Coachgesprek.
Dinsdag 28 oktober 2025
- Laatst sprint details uitgewerkt.
- Kleur- en contrastfeedback gevraagd.
Woensdag 29 oktober 2025
- Wrap-up sprint 3.
- #NoMouse challenge gedaan.
- Focus-states verbeterd.
Donderdag 30 oktober 2025
- Sprint review met opdrachtgever.
- Feedback over visuele hiërarchie.
November 2025
Donderdag 13 november 2025
Vandaag heb ik vanuit huis gewerkt aan de gezamenlijke styleguide. Ik heb onderdelen aangevuld, vragen uitgezocht over styleguides en stylesheets, en samen met mijn team gewerkt aan een consistentere opzet.
Vrijdag 14 november 2025
Daily Checkout
- Feedback gegeven over navigatiestructuur van een ander team.
- Spacing-systeem gezien bij ander team → toegevoegd aan styleguide.
- Issues worden maandag opgepakt.
Maandag 17 november 2025
Workshop typografie gevolgd. Geleerd over font-stacks, serif/sans-serif, @font-face, hyphens en leesbaarheid in webdesign.
Woensdag 19 november 2025
Daily Checkout – Formulieren
- Inputs hebben labels nodig voor toegankelijkheid.
- Type, autocomplete, inputmode en enterkeyhint verbeteren UX.
- Fieldsets en legends geven structuur.
- Required, maxlength, min, max en step regelen validatie.
- Input pseudo-classes: :focus, :valid, :invalid, :required, enz.
Vrijdag 21 november 2025
Daily Checkout – Code/Design Review
- Ik heb niet genoeg gebruikgemaakt van de gezamenlijke stylesheet.
- Cascade gebruikt via algemene → specifieke selectors.
- Gebruikte custom properties: --spacing-m, --color-primary, --font-size-base.
- Verbeterpunten: minder inline CSS, variabelen consistenter gebruiken.
Maandag 24 november 2025
Learning Journal – Workshop Layout Compositie
- Bronnen toegevoegd: Alle materialen opgeslagen met uitleg en links naar voorbeelden.
-
Dingen die ik nog wil leren:
- Beter toepassen van visuele hiërarchie.
- Consistente whitespace gebruiken in grotere layouts.
- DoD toegevoegd in Portflow: Gebruik van Gestaltprincipes aantoonbaar gemaakt.
Dinsdag 25 november 2025
Laatste voorbereidingen voor de sprint review. Geen CSS-challenge vandaag, vooral begeleid bij openstaande vragen.
Woensdag 26 november 2025
Daily Checkout – 1 Minute Paper
- Mijn codevraag: Wat was mijn belangrijkste codeprobleem vandaag en hoe heb ik dit opgelost?
- Oplossing: Console-error gevolgd, opgelost en documentatie toegevoegd in mijn Learning Journal.
- Voorbereid op de sprint review.
- Opdracht gekregen om een selfie te maken met de opdrachtgever en die in Teams te posten.
Donderdag 27 november 2025
Sprint review met de opdrachtgever. Alles gepresenteerd en feedback verzameld voor de volgende sprint.
Vrijdag 28 november 2025
Overzicht van mijn kennis tot nu toe
- Ik weet hoe ik met GitHub iteratief kan werken, issues en sub-issues gebruik en wat een fork, clone, commit, push, pull, merge en conflict zijn. 🤓
- Ik weet wat HTML-elementen, tags en attributen zijn, hoe ik mijn HTML valideer, en wat CSS-selectors, properties, values, units en combinators zijn. 🤓
- Ik weet hoe ik Figma gebruik voor variatie, hoe ik prototypes maak en wanneer ik overstap naar code. 🍗
- Ik ken alle CSS Layout Modes, kan bepalen welke ik wanneer inzet en ze combineren. 🤓
- Ik weet wat de WCAG-richtlijnen zijn, hoe ik automatische en handmatige audits uitvoer en resultaten verwerk. 🤓🍗
- Ik weet hoe ik met alleen HTML een prototype maak en waarom een robuust fundament belangrijk is. 🍗
- Ik ontwerp Mobile First, herken dit in CSS, en weet hoe CSS nesting hierbij helpt. 🤓🍗
- Ik ken regels voor leesbaarheid, typografie en wanneer ik welke CSS-properties en units inzet. 🤓🍗
- Ik weet hoe kleurcontrast werkt voor hiërarchie en toegankelijkheid en hoe ik dit test en verbeter. 🤓
- Ik weet hoe ik een Readme en Wiki schrijf, Markdown toepas en presenteer tijdens een Sprint Review. 🍗
- Ik weet wat specificity, cascade en inheritance betekenen en kan dit uitleggen met een schets. 😅
- Ik kan Gestaltwetten benoemen en toepassen om ontwerpen te verbeteren. 😅🤓
- Ik weet hoe ik formulieren opbouw, validatie toevoeg en states style, en het verschil tussen labels en placeholders. 🫣
- Ik weet wat CSS Custom Properties zijn, waarom ze zo heten, en hoe ze dynamisch samenwerken met cascade en specificity. 🤓
- Ik ken de basis van programmeren: variabelen, functies, loops, datatypes, en het verschil tussen imperatieve en declaratieve talen. 🫣
- Ik weet wat keyframe-animaties zijn, wanneer ik transitions of animaties gebruik en hoe. 🫣
- Ik begrijp het verschil tussen feedback en feedforward in UI en hoe duidelijke labels daarbij helpen. 🫣
- Ik weet wat een gebruikerstest is, hoe ik een test voorbereid en hoe ik bruikbare resultaten verzamel door observatie. 🫣
- Ik weet hoe ik met JavaScript via het DOM (querySelector, addEventListener, classList) micro-interacties toevoeg. 🫣
- Ik weet wat UI-events en event-properties zijn en wat een callbackfunctie is. 🫣
December 2025
Maandag 1 december 2025
Daily Checkout
-
Drie leervragen op basis van de stof van vandaag:
- Hoe kan ik JavaScript-interacties beter structureren met het 3-stappenplan?
- Hoe weet ik wanneer ik welke DOM-selector moet gebruiken?
- Hoe kan ik fouten sneller vinden en oplossen met de console?
-
Welke JS-begrippen moet ik nog oefenen?
event.target en event bubbling
- Verschil tussen
querySelector en querySelectorAll
- Functies met parameters binnen event listeners
Deze ga ik verder oefenen in de JS Fundamentals deeltaak.
Woensdag 3 december 2025
Daily Checkout
-
De workshop bestond uit drie opdrachten: de Console, het 3-stappenplan, en van Comments naar Code.
Ik heb opdracht 3 bijna af: mijn hamburgermenu werkt via het 3-stappenplan (selecteren → event → actie).
Ik moet alleen nog testen of alles correct opent op mobiel.
-
Bij de JS Fundamentals-deeltaak heb ik geleerd hoe DOM-selecties werken,
hoe een eventListener en callbackfunctie samenwerken, en hoe
classList.toggle zorgt voor interactie zoals een menu dat open- en dichtklapt.
-
DoD toegevoegd: “Je hebt aan de hand van een user story en wireflow een interactie ontworpen.”
Gelinkt in Portflow met screenshots van user story, wireflow en breakdown.
Maandag 8 december 2025
Daily Checkout – UI Events
-
Vandaag heb ik uitleg gekregen over UI-events en hoe gebruikersinteractie werkt in JavaScript.
We hebben gekeken naar events zoals
click, input en change,
en hoe deze worden gekoppeld met addEventListener.
-
Ik heb geleerd dat een interactie altijd volgens een vast patroon werkt:
element selecteren → event luisteren → actie uitvoeren.
Dit 3-stappenplan helpt mij om mijn JavaScript overzichtelijk en logisch op te bouwen.
-
In de checkout heb ik nagedacht over welke UI-events ik kan toepassen in de opdracht voor de opdrachtgever,
zoals het openen en sluiten van een menu en het geven van visuele feedback na een klik.
-
Ik heb hiervoor een eerste user story bedacht:
“Als gebruiker wil ik duidelijke feedback krijgen wanneer ik op een element klik, zodat ik begrijp wat er gebeurt op de website.”
-
Tijdens deze les is een foto gemaakt van het checkout-scherm ter documentatie voor mijn Learning Journal.
Woensdag 10 december 2025
Daily Checkout
-
Iets wat ik nog niet wist:
-
HTML:
Ik wist nog niet dat semantische elementen zoals button automatisch betere toegankelijkheid bieden dan een div met een click-event.
-
CSS:
Ik heb geleerd dat :focus-visible beter is dan :focus, omdat het alleen zichtbaar wordt bij toetsenbordgebruik.
-
JavaScript:
Ik snap nu beter hoe event.target werkt en waarom dit belangrijk is bij meerdere interactieve elementen.
-
Wat ga ik voor vrijdag nog toevoegen?
Ik ga mijn interactie uitbreiden met duidelijke states (open/gesloten) en controleren of alles logisch werkt zonder muis.
-
Wat ga ik vrijdag testen?
Ik ga testen of gebruikers zonder uitleg begrijpen wat ze kunnen doen en of mijn interactie intuïtief genoeg is.
-
Favoriete browser:
Mijn favoriete browser is Chrome vanwege de DevTools. Ik ga Firefox vaker gebruiken om verschillen tussen browsers te testen.
-
Doordenker:
Meerdere browsers zijn goed voor eindgebruikers omdat dit innovatie stimuleert, voorkomt dat één partij het web bepaalt en zorgt voor betere toegankelijkheid.
Vrijdag 12 december 2025
Daily Checkout – User Test (Sprint 5)
-
Hoe ging het testen met een testpersoon?
Het lukte goed om de testpersoon hardop te laten denken. Ik heb geprobeerd zo min mogelijk in te grijpen en geen sturende vragen te stellen. Hierdoor kreeg ik eerlijkere feedback.
-
Wat ging goed en wat kan beter?
Wat goed ging, was dat de gebruiker de hoofdfunctie snel begreep. Wat ik volgende keer beter wil doen, is vooraf duidelijkere instructies geven en mezelf nog meer op de achtergrond houden.
-
Hoe ging de tweede user test?
De tweede test liet zien dat mijn aanpassingen effect hadden: de interactie was duidelijker en zorgde voor minder verwarring. Er kwamen nog kleine verbeterpunten uit, zoals betere labels en visuele feedback.
-
Verbeterpunten voor volgende week:
- Duidelijkere feedback na een klik
- Beter zichtbare focus-states
- Consistentere benaming van knoppen
Mijn werk voor de user test heb ik toegevoegd aan Portflow met de titel:
“Sprint 5 – Je hebt aan de hand van een testplan een user test gedaan, de testresultaten gebruikt voor een nieuwe versie, en opnieuw getest.”
Maandag 15 december 2025
Learning Journal – Navigeren / Labels
- In de les kregen we de opdracht: “Beantwoord deze vragen in je Learning Journal.”
- Ik heb drie studievraag genoteerd over navigeren en labels. Dit zijn moeilijke proefwerkvragen die ik na vandaag moet kunnen beantwoorden.
- Ik heb gereflecteerd op de opdracht Opdracht User test bespreken en de feedback verwerkt in de issues van ons project.
- We hebben vooruitgekeken naar woensdag: tijdens de wrap-up gaan we de laatste sprint review voorbereiden, de retrospect voorbereiden en de code-demo’s voor vrijdag (PARTY) klaarzetten – ook als je dinsdag de sprint review hebt.
Maandag 5 januari 2026
Wat zijn je goede voornemens voor dit jaar
- Ik wil nieuwe technieken zoals clamp of container queries leren.
- Feedback vragen aan andere studenten of docenten of gewoon mensen in het algemeen.
Woensdag 14 januari 2026
Daily Checkout – Animatie ontwerpen
Tijdens de checkout kregen we het onderwerp Animatie ontwerpen.
Op het scherm stond dat we moesten dubbelchecken welk animatieprincipe we hebben opgenomen
in onze User Story issue. Daarnaast moesten we in onze Learning Journal
drie nieuwe CSS-properties beschrijven, twee Disney-animatieprincipes noemen die we nog
niet helemaal begrijpen, en één animatieprincipe kiezen dat we later toevoegen aan onze
persoonlijke website (assessment week).
Dubbelcheck: welk animatieprincipe heb ik opgenomen in mijn User Story issue?
Ik heb het animatieprincipe Feedback opgenomen.
Dit betekent dat de gebruiker direct visuele terugkoppeling krijgt na een actie
(bijvoorbeeld een knop die kort “active” aanvoelt, een menu dat soepel open/dicht gaat,
of een succes-state na een klik). Hierdoor begrijpt de gebruiker beter wat er gebeurt.
3 nieuwe CSS-properties die ik nog niet (goed) kende
-
animation-fill-mode
Hiermee bepaal je wat er met de styles gebeurt voor en na de animatie.
Handig als je wilt dat een element in de eindpositie blijft staan (bijv. forwards).
-
animation-play-state
Hiermee kun je een animatie pauzeren of weer starten (paused / running).
Dit is handig voor interactieve animaties, zoals pauzeren bij hover of via JavaScript.
-
transform-origin
Hiermee bepaal je het “draaipunt” van een transform (zoals rotate/scale).
Dit maakt animaties natuurlijker, bijvoorbeeld een deur die vanaf de zijkant openzwaait.
2 Disney-animatieprincipes die ik nog niet helemaal begrijp
-
Follow Through / Overlapping Action
Ik snap het idee, maar ik vind het lastig om te bepalen hoeveel “nabeweging” nog prettig is in UI-animaties zonder dat het te druk wordt.
-
Arcs
Ik begrijp dat beweging vaak in een boog gaat (natuurlijker dan rechte lijnen), maar ik weet nog niet goed hoe ik dit praktisch toepas in web-animaties (CSS/JS).
1 animatieprincipe dat ik ga toevoegen aan mijn persoonlijke website (assessment week)
Ik wil het principe Easing (Timing / Spacing) toevoegen aan mijn persoonlijke website.
Dus niet “snelle harde” bewegingen, maar vloeiende overgangen met bijvoorbeeld ease-out of een cubic-bezier().
Vrijdag 16 januari 2026
Daily Checkout – Sprint 6
Tijdens de les werd het checkout-scherm getoond met reflectievragen voor Sprint 6.
Op het scherm stond dat we moesten terugkijken op de User Test uit sprint 5,
benoemen wat er verbeterd is, en vooruitkijken naar de planning en roadmap.
Wat heb ik meegenomen uit de User Test van sprint 5?
- Ik heb geleerd dat gebruikers duidelijke visuele feedback nodig hebben na een klik.
- Labels en benamingen moeten consistenter zijn om verwarring te voorkomen.
- Focus-states zijn belangrijk voor toetsenbordgebruik en toegankelijkheid.
Planning Roadmap
- Een laatste testmoment met een gebruiker
- Feedback verwerken in code en documentatie
- Controle op toegankelijkheid en consistentie
Maandag 19 januari 2026
Daily Checkout – Code conventies / refactoring
Met welke code conventies heb ik nog moeite? Hoe komt dat?
Ik heb soms nog moeite met het consequent toepassen van code conventies, vooral bij grotere bestanden.
Dan vergeet ik soms om alles netjes te groeperen of om dezelfde naamgeving overal door te voeren.
Hoeveel tijd zou ik in een sprint moeten plannen voor refactoring?
Ik denk dat het realistisch is om tijdens een sprint ongeveer 20 tot 30 procent van mijn tijd te reserveren voor refactoring.
Woensdag 21 januari 2026
Daily Checkout – CSS Tricks
Vandaag heb ik gewerkt met één van de vijf CSS-tricks die we hebben besproken.
Ik heb specifiek de trick “Mobiele hoogte fixen met dvh” toegepast en onderzocht in mijn project.
Oplossing
height: 100vh;
height: 100dvh;
Uitleg: dvh (dynamic viewport height) houdt rekening met de dynamische hoogte van de browser op mobiel.
Vrijdag 23 januari 2026
Overzicht van mijn kennis tot nu toe
- Ik weet hoe ik met GitHub iteratief kan werken (fork, clone, commit, push/pull, merge, conflicts). 🍗
- Ik weet hoe HTML en CSS werken (structuur, selectors, units, combinators). 🍗
- Ik kan layout modes kiezen en combineren (Grid/Flex). 🤓
- Ik weet wat WCAG is en hoe ik audits kan doen. 🍗
- Ik kan met JavaScript DOM selecteren en events gebruiken (querySelector, addEventListener, classList). 🤓
Maandag 2 Februari 2026
Mini quiz
- Met / kan je bestanden linken.
- Wanneer je iets hebt gecommit of als iets niet werkt.
- Control + C klikken.
- Ik denk het niet, ik weet het niet zeker.
- Control + of gewoon rechtsboven een icoon die de tweede van links is.
- Er staan veel mapjes met meer mapjes met content die ik niet snap.
- Geen denk ik.
Bronnen:
Woensdag 11 februari 2026
Daily Checkout – Vragen (Liquid + URL)
-
Wat is een query parameter?
Een query parameter is extra info in een URL. Het staat achter een ?.
Bijvoorbeeld: /student?id=12. Dan is id=12 de query parameter.
-
Op wat voor soort data kun je for loops gebruiken?
Vooral op lijsten/arrays. Dus als je meerdere dingen hebt, zoals studenten, squads of producten.
Dan kan je met een loop alles laten zien zonder alles 1 voor 1 te typen.
-
Welke Liquid tags ken je inmiddels?
Ik ken nu vooral:
{% raw %}{% if %}{% endraw %},
{% raw %}{% else %}{% endraw %},
{% raw %}{% endif %}{% endraw %},
{% raw %}{% for %}{% endraw %},
{% raw %}{% endfor %}{% endraw %},
en {% raw %}{% assign %}{% endraw %}.
-
Welke Liquid filters heb je al gebruikt?
Ik heb bijvoorbeeld deze gebruikt:
| upcase, | downcase, | capitalize,
| default en soms | size.
-
Wat versta jij onder URL design en nette URL’s?
Nette URL’s zijn gewoon duidelijk en makkelijk te lezen, zoals:
/student/12 of /squad/fdnd.
-
Wat vind je lelijke URL’s?
Lelijke URL’s zijn van die lange urls met allemaal rare dingen erin, zoals:
/page?id=12&ref=abc&session=999. Dat ziet er rommelig uit.
Vrijdag 13 februari 2026
Daily Checkout – Kill Your Darlings (Reflectie)
-
Wat heb je geleerd tijdens deze code review?
Ik heb geleerd dat mijn code netter kan door betere structuur en duidelijkere namen te gebruiken.
Ook heb ik geleerd om minder dingen dubbel te doen en meer consistent te werken.
-
Hoe is het om volgende week opnieuw te beginnen met een gezamenlijke squadpage?
Ik vind het eigenlijk wel prima, want nu snappen we beter hoe we moeten samenwerken.
We kunnen sneller beginnen en meteen een goede basis maken.
-
Wat wil je meenemen uit jouw huidige squadpage? Waar ben je trots op?
Ik wil meenemen dat ik mijn site echt goed heb kunnen maken en ik ben blij ermee.
Het is gewoon heel nice uitgekomen.
Ik ben ook trots dat ik dingen heb gebouwd met Grid/Flex en dat ik data kon laten zien met loops.
Woensdag 18 februari 2026
Daily Checkout – Samenwerking & Presentatie
-
Op welke momenten zou jij de stand-up willen inzetten? Waar helpt het bij?
Ik zou de stand-up aan het begin van elke werkdag inzetten, vooral tijdens een nieuwe sprint
of wanneer iedereen aan verschillende onderdelen werkt. Het helpt om overzicht te houden,
te weten wie waarmee bezig is en om snel te zien of iemand vastloopt.
Zo voorkom je miscommunicatie en werk je efficiënter samen.
-
Hoe ga je de squadpage presenteren vrijdag? Wat is jouw rol hierin?
Vrijdag begint Sieuwke met haar deel van de presentatie.
Daarna leg ik mijn onderdeel uit. Mijn rol was het maken van de zoekbalk
en het testen van de website op toegankelijkheid en validatie.
Ik heb de site gecontroleerd met een WCAG-audit, de HTML Validator
en een color contrast test om te zorgen dat alles toegankelijk en correct opgebouwd is.
Ook heb ik wireflows en schetsen gemaakt in de beginfase van het ontwerp.
Na mijn uitleg sluit Luka af met zijn onderdeel.
-
Wat neem je mee uit de advanced les over Create, Read, Update, Delete?
Ik neem mee dat CRUD de basis is van bijna elke webapplicatie.
Ik begrijp nu beter hoe data wordt aangemaakt, opgehaald, aangepast en verwijderd,
en hoe dit samenwerkt tussen client, server en eventueel een API.
Vrijdag 20 februari 2026
Vragenlijst
- Ik kan uitleggen wat NodeJS, Express en Liquid zijn, hoe die samenwerken, en hoe ik daarmee lokaal een server kan maken. 😅
- Ik weet wat het doel van
package.json is, heb met npm packages geïnstalleerd en weet hoe ik die gebruik in mijn server code. 🤓
- Ik kan met commando’s in de terminal een NodeJS project starten en stoppen, en kan uitleggen wanneer herstarten nodig is. 🥞
- Ik heb een strategie voor debuggen in NodeJS, en weet hoe ik
console.log() kan inzetten en uitlezen op de server. 🤓
- Ik weet wat URLs zijn, en kan de verschillende onderdelen van een URL benoemen en gebruiken. 😅
- Ik weet wat in Express routes en route parameters zijn, en ik kan zelf een nieuwe route aanmaken volgens mijn eigen URL ontwerp. 🤓
- Ik weet wat de request en response argumenten zijn binnen een route callback functie in Express, en welke ik waarvoor kan gebruiken. 😅
- Ik weet wat een query parameter is, hoe ik die kan gebruiken in server-side code, en hoe ik die via links en formulieren kan veranderen. 🫣
- Ik snap wat HTTP is, kan het verschil tussen GET en POST methods uitleggen, en snap dat mijn NodeJS code zowel server als client is. 🤓
- Ik weet wat een REST API is, wat valide JSON data is en kan JSON data fetchen van verschillende API endpoints. 😅
- Ik kan data uit een REST API filteren, sorteren of doorzoeken door query parameters aan te passen. 🤓
- Ik kan uitleggen wat Liquid doet, wat een view is, wat server-side rendering inhoudt en hoe ik data aan een view meegeef om dynamische HTML te renderen. 😅
- Ik weet hoe ik in Liquid partials kan maken en gebruiken, en data mee kan geven aan partials. 😅
- Ik weet hoe ik verschillende Liquid filters toe kan passen en waar ik kan vinden hoe ze werken. 🤓
- Ik heb een strategie voor het debuggen van dynamische data in Liquid views met het
json filter. 😅
- Ik weet wat control flow in Liquid is, en hoe ik
if en for loops kan gebruiken in een Liquid view. 🤓
- Ik weet wat variabelen, objects, functions, keywords, arrays, strings, statements en expressions zijn in JavaScript. 😅
- Ik snap wat de async en await keywords doen in JavaScript code, en wat die te maken hebben met promises. 🤓
- Ik begrijp het verschil tussen client-side JS en server-side JS en kan uitleggen waarom JS in browsers onbetrouwbaarder is dan NodeJS. 😅
- Ik kan gebruikers via een formulier data met een POST naar mijn server laten sturen, dit bewaren in een variabele en gebruiken in views. 😅
- Ik kan naar de server gePOSTe formulier data bewaren in een REST API en weet die weer terug te vinden via een filter. 🫣
- Ik weet hoe ik Content First en mock data in kan zetten om snel een HTML prototype te maken met server-side code. 🫣
- Ik weet hoe ik verschillende UI states uit de UI stack kan verwerken in mijn views, en hoe ik daarin feedforward en feedback mix. 🤓
- Ik weet dat ik niet weet hoeveel verschillende devices, operating systems, browsers, versies en varianten daarvan er in gebruik zijn en wat dat betekent voor testen. 😅
- Ik weet wat Progressive Enhancement betekent, en ken minimaal vijf strategieën om dat toe te passen in mijn HTML, CSS en JS, waaronder feature detection. 🤓
Bronnen voor dingen die ik nog moeilijk vind
Woensdag 4 maart 2026 Wat is JSON?
Vandaag heb ik geleerd wat JSON is. JSON staat voor
JavaScript Object Notation. Ik begrijp het als een manier
om data gestructureerd op te slaan en uit te wisselen tussen bijvoorbeeld
een website en een server. JSON kan waarden bevatten zoals objecten,
arrays, strings, numbers, booleans en null. :contentReference[oaicite:0]{index=0}
De termen van JavaScript Object Notation in mijn eigen woorden
-
Object: een groep gegevens die bij elkaar horen.
In JSON staat een object tussen accolades
{ }. Een object
bestaat uit properties: een key met een value. :contentReference[oaicite:1]{index=1}
-
Array: een lijst met meerdere waarden. In JSON staat
een array tussen rechte haken
[ ]. :contentReference[oaicite:2]{index=2}
-
Key: de naam van een property in een object,
bijvoorbeeld
"name". In JSON moeten propertynamen
als string en dus tussen dubbele aanhalingstekens worden geschreven. :contentReference[oaicite:3]{index=3}
-
Value: de inhoud die bij een key hoort, bijvoorbeeld
"Jasin" of 20. :contentReference[oaicite:4]{index=4}
-
String: tekst tussen dubbele aanhalingstekens,
bijvoorbeeld
"Frontend". :contentReference[oaicite:5]{index=5}
-
Number: een getal, bijvoorbeeld
1 of
25. JSON ondersteunt gewone getallen, maar niet alles uit
JavaScript zoals NaN of Infinity. :contentReference[oaicite:6]{index=6}
-
Boolean: een waarde die alleen
true of false kan zijn. :contentReference[oaicite:7]{index=7}
-
Null: betekent dat iets expres geen waarde heeft. :contentReference[oaicite:8]{index=8}
Voorbeeld van JSON
{
"name": "Jasin",
"opleiding": "Frontend Development",
"leerjaar": 1,
"student": true,
"vakken": ["HTML", "CSS", "JavaScript"],
"project": null
}
De termen uitgelegd met dit voorbeeld
- Object: het hele blok tussen
{ }.
- Keys:
"name", "opleiding", "leerjaar".
- Values:
"Jasin", "Frontend Development", 1.
- String:
"Jasin" en "Frontend Development".
- Number:
1.
- Boolean:
true.
- Array:
["HTML", "CSS", "JavaScript"].
- Null:
null.
Abstracte begrippen in mijn eigen woorden
-
Nested: data die in andere data zit, bijvoorbeeld een
object in een object of een array in een object.
-
Schema: een soort afspraak of structuur voor hoe data
eruit moet zien. Bijvoorbeeld welke velden verplicht zijn en welk type
data daarin hoort.
-
Parse: JSON-tekst omzetten naar een JavaScript-object.
Dat doe je bijvoorbeeld met
JSON.parse(). :contentReference[oaicite:9]{index=9}
-
Serialize: JavaScript-data omzetten naar JSON-tekst,
bijvoorbeeld met
JSON.stringify(). :contentReference[oaicite:10]{index=10}
-
Encode: data omzetten naar een vorm die verstuurd of
opgeslagen kan worden.
-
Decode: gecodeerde data weer terug omzetten zodat het
leesbaar of bruikbaar wordt.
-
Payload: de echte data die wordt meegestuurd in een
request of response, bijvoorbeeld JSON met gebruikersgegevens.
-
API: een manier waarop programma’s of websites met
elkaar communiceren en data uitwisselen. JSON wordt daar vaak voor
gebruikt. :contentReference[oaicite:11]{index=11}
-
Request: een aanvraag die je naar een server stuurt om
iets op te halen of te versturen. In de Fetch API bestaat daar ook een
Request-object voor. :contentReference[oaicite:12]{index=12}
-
Response: het antwoord dat je terugkrijgt van de
server. Dat kan bijvoorbeeld JSON-data zijn die je met
response.json() uitleest. :contentReference[oaicite:13]{index=13}
Mijn reflectie
Eerst vond ik JSON nog best verwarrend, maar nu snap ik beter dat het
eigenlijk gewoon een duidelijke manier is om data te beschrijven.
Als eerstejaars frontender vind ik dit belangrijk, omdat je bij websites
vaak data uit een API ophaalt en verwerkt in je interface.
Daarom moet ik goed begrijpen wat een object, array, key en value zijn,
en wat het verschil is tussen JSON als tekst en een JavaScript-object. :contentReference[oaicite:14]{index=14}
MDN-bronnen
Maandag 9 maart 2026 – Checkout
-
Waar leg jij de grens qua nette URL’s ontwerpen?
Ik vind een nette URL vooral kort, duidelijk en logisch. Dus geen rare tekens of te lange dingen erin.
Bijvoorbeeld /student/Jasin is netter dan /page?id=123&name=jasin.
-
Wat heeft het driestappenplan te maken met server-side rendering en callbacks?
Het driestappenplan is eigenlijk dat je iets opbouwt in logische stappen.
Bij server-side rendering vraag je data op, verwerk je die en stuur je daarna een response terug.
Callbacks helpen daarbij omdat een functie pas wordt uitgevoerd als iets klaar is.
-
Welke van de drie manieren van routes aanmaken heb je al gebruikt?
Ik heb vooral routes gemaakt met app.get().
Daarmee heb ik pagina’s en data opgehaald in mijn project.
-
Wat zou je in jouw project nog anders dan HTML als response kunnen sturen?
Ik zou ook JSON kunnen terugsturen.
Bijvoorbeeld als ik data uit een API wil laten zien of apart wil testen.
-
Wat moet een goede 404 pagina volgens jou bevatten?
Een goede 404 pagina moet duidelijk zeggen dat de pagina niet bestaat.
Ook moet er een link of knop op staan om terug te gaan naar home.
Het is ook fijn als die pagina in dezelfde stijl is als de rest van de website.
-
Welke bron ga je raadplegen om meer over regular expressions te leren?
Ik zou MDN gebruiken, omdat dat meestal duidelijk is.
Misschien ook W3Schools of een YouTube video als ik het nog niet goed snap.
Rijk van Zanten en Directus
Rijk van Zanten is co-founder en CTO van Directus. Hij komt uit Overijssel
en woont nu in Brooklyn, New York. Naast zijn werk als CTO is hij ook muzikant
in Manhattan.
Hij begon ooit bij de HvA en geeft nu ook les in New York, onder andere bij
Parsons School of Design. Hij heeft daar ook een master gehaald. Zijn afstudeerproject
was Directus. Ook heeft hij gewerkt bij XXIX en stage gelopen bij zijn eigen bedrijf.
In 2017 verhuisde hij naar New York.
Directus is een platform waarmee developers veel vrijheid hebben om met data te werken.
Het werkt als een API en helpt bij het beheren van een datamodel en database. Voor elke
entiteit kan een nieuwe tabel en formulier worden gemaakt.
Directus wordt gebruikt door grote bedrijven zoals FOX, BMW en Mercedes. Het team bestaat
uit ongeveer 50 mensen. Het is source available. Bedrijven met meer dan 5 miljoen omzet
moeten betalen voor een commerciële licentie.
Directus heeft servers in Frankfurt, Ierland, Amerika, het Midden-Oosten en China.
Woensdag 9 maart 2026 – Learning Journal
Welke notatie gebruik jij om data op te halen uit Directus?
In mijn project haal ik data op uit Directus in JSON. JSON betekent
JavaScript Object Notation. Dat is een manier om data te structureren
met keys en values. Het lijkt een beetje op een JavaScript object.
{
"name": "Jasin",
"birthdate": "2005-01-01"
}
In mijn server gebruik ik bijvoorbeeld een object om parameters mee te geven:
const params = {
fields: ['name', 'birthdate'],
sort: 'name'
}
Dit betekent dat ik alleen de velden naam en geboortedatum ophaal
en dat de data gesorteerd wordt op naam.
Hoeveel experimenten met query parameters heb je gedaan?
Ik heb meerdere dingen geprobeerd met filters, zoals zoeken op naam
en bepalen welke velden ik wil ophalen. Bijvoorbeeld:
filter[name][_contains]=jasin
fields=name,birthdate
Hiermee zoek ik naar mensen waarvan de naam “jasin” bevat en krijg ik
alleen naam en geboortedatum terug.
Hoeveel Liquid filters heb je al geprobeerd?
Ik heb een paar Liquid filters uitgeprobeerd zoals:
upcase → maakt tekst hoofdletters
downcase → maakt tekst kleine letters
truncate → kort tekst in
{{ product.title | upcase }}
{{ product.description | truncate: 10 }}
Er zijn meer dan 50 Liquid filters, dus ik moet er nog meer leren
en uitproberen in mijn project.
Woensdag 9 maart 2026 – Experimenten met Directus query parameters
Experiment 1 – Studenten sorteren op naam
In dit experiment wilde ik alle studenten ophalen en sorteren op naam.
De parameter sort zorgt ervoor dat de resultaten gesorteerd worden.
https://fdnd.directus.app/items/person/?sort=name
Experiment 2 – Namen die beginnen met D
Hier wilde ik alle studenten ophalen waarvan de naam begint met de letter D.
Hiervoor gebruik ik een filter met _istarts_with.
De "i" betekent dat het case insensitive is, dus hoofdletters maken niet uit.
https://fdnd.directus.app/items/person/?sort=name&filter[name][_istarts_with]=d
Experiment 3 – Namen die beginnen met D of K
In dit experiment wilde ik studenten vinden waarvan de naam begint
met D of K. Hiervoor gebruik ik een OR-filter.
https://fdnd.directus.app/items/person?sort=name&filter[_or][][name][_istarts_with]=d&filter[_or][1][name][_istarts_with]=k
Experiment 4 – Alleen naam en geboortedatum van studenten met een birthdate
Hier wilde ik alleen de velden name en birthdate ophalen
van studenten die een birthdate hebben ingevuld. Zo krijg ik minder data terug
en alleen wat ik nodig heb.
https://fdnd.directus.app/items/person?fields=name,birthdate&filter[birthdate][_nnull]=true
Woensdag 11 maart 2026 – Directus filters en Liquid
Data filters met Directus
Vandaag heb ik geleerd hoe je data kan filteren met Directus.
Bijvoorbeeld zoeken op naam of bepaalde letters.
- Zoeken op naam met een filter.
_contains zoekt naar bepaalde letters.
_icontains is case insensitive, dus hoofdletters maken niet uit.
_contains is case sensitive, dus hoofdletters maken wel uit.
Je kan ook bepalen welke velden je wil ophalen zodat je minder data terugkrijgt.
fields=name,birthdate
Zo haal je alleen de data op die je nodig hebt.
Express route
app.get('/', async (req, res) => {
const params = {
filter: {},
fields: ['name', 'birthdate'],
sort: 'name'
}
})
Nodemon
Nodemon zorgt ervoor dat je server automatisch opnieuw start wanneer je code verandert.
npm install nodemon
dev: nodemon server.js
start: node server.js
npm run dev
Liquid filters
Zonder filter:
{{ product.title }}
Met filter:
{{ product.title | upcase }}
Hiermee wordt de tekst in hoofdletters gezet.
truncate filter
{{ product.description | truncate: 10 }}
Hiermee wordt tekst ingekort tot een bepaald aantal tekens.
Maandag 16 maart 2026
Daily Checkout – POST interactie
- Vandaag heb ik gekeken naar de planning van mijn POST interactie.
- Ik heb nagedacht over hoeveel tijd ik nodig heb voor een low-fi schets.
- Ook heb ik gekeken naar de wireflow en breakdown van de interactie.
- Daarna heb ik ingeschat hoeveel tijd het kost om de functionaliteit te bouwen in HTML en server-side rendering.
- We moesten ook een metafoor voor Progressive Enhancement posten in het Sprint 09 kanaal.
- Verder heb ik nagedacht over wat ik nog nodig heb voor mijn POST interactie en of er een database-aanpassing nodig is.
Woensdag 18 maart 2026
Daily Checkout
- Vandaag heb ik verder gewerkt aan mijn POST interactie.
- Ik heb gekeken hoeveel tijd ik nodig heb voor een low-fi schets.
- Ook heb ik nagedacht over de wireflow en breakdown van de interactie.
- Daarnaast heb ik ingeschat hoeveel tijd het bouwen in HTML en server-side rendering kost.
- We moesten een plaatje posten in het Sprint 09 kanaal met een metafoor voor Progressive Enhancement.
- Verder heb ik gekeken wat ik nog nodig heb voor mijn POST interactie.
- Ook heb ik gecontroleerd of ik een database-aanpassing nodig heb.
Bronnen
Maandag 23 maart 2026
Learning Journal – Checkout
Vandaag hebben we tijdens de checkout gereflecteerd op enhancement strategieën,
UI-componenten en CSS-technieken. Tijdens deze les is ook een foto gemaakt van
het checkout-scherm voor mijn Learning Journal.
Welke enhancement strategie(en) zijn er, en welke heb je al toegepast in de deeltaak?
Een belangrijke enhancement strategie is Progressive Enhancement.
Daarbij bouw je eerst een goede basis in HTML, daarna voeg je CSS toe voor de vormgeving
en pas daarna extra interactie met JavaScript. Een andere strategie is
feature detection: daarmee controleer je of een browser een bepaalde
techniek ondersteunt voordat je die echt gebruikt. MDN legt uit dat je dit in CSS
kunt doen met @supports, ook wel een feature query genoemd. :contentReference[oaicite:0]{index=0}
In mijn deeltaak heb ik al gewerkt volgens het idee van progressive enhancement:
eerst zorgde ik dat de content en structuur goed werkten, daarna kwam de styling
en daarna pas extra gedrag. Ik heb ook @supports gebruikt.
Als frontender weet ik nog niet helemaal hoe deze techniek precies werkt, maar ik begrijp
wel dat je ermee CSS alleen laat uitvoeren als een browser een bepaalde property of waarde
ondersteunt. Dat maakt het veiliger om moderne CSS te gebruiken. Volgens Can I Use worden
CSS feature queries breed ondersteund, met ongeveer 97% wereldwijde support. :contentReference[oaicite:1]{index=1}
Welk UI component ga je komende woensdag bespreken? En welke volgende week woensdag?
Komende woensdag wil ik een navigatiemenu bespreken, omdat dit
een belangrijk onderdeel is van de gebruikservaring en ik daar al mee geoefend
heb in mijn project. Ik wil dan uitleggen hoe je dit semantisch, toegankelijk
en responsive opbouwt.
Volgende week woensdag wil ik een formuliercomponent bespreken,
bijvoorbeeld een invoerveld met label en validatie. Dat lijkt mij handig omdat
formulieren veel voorkomen en omdat toegankelijkheid en duidelijke feedback daar
extra belangrijk zijn.
Onderzoek uit je project drie CSS technieken waar je over twijfelt met CanIUse
-
Container queries
Ik twijfel nog over container queries omdat dit een moderne techniek is.
Daarom wil ik eerst via Can I Use controleren hoe goed deze techniek wordt ondersteund
voordat ik die breed inzet in mijn project.
-
:has()
Deze selector lijkt mij handig, maar ik twijfel omdat moderne selectors niet
altijd in elke browser hetzelfde werken. Daarom wil ik deze ook eerst controleren
op browser support.
-
dvh
Ik heb al gewerkt met dvh, maar ik wil beter begrijpen hoe stabiel
deze viewport-unit is op verschillende browsers en mobiele apparaten.
Mijn conclusie is dat ik als frontender moderne CSS-technieken interessant vind,
maar dat ik niet zomaar alles moet gebruiken zonder support te controleren.
Daarom zijn MDN en Can I Use handige bronnen voor mij om beter te begrijpen
hoe technieken zoals @supports werken en wanneer ik ze veilig kan inzetten. :contentReference[oaicite:2]{index=2}
Bronnen
Tijdens deze les is ook een foto gemaakt van het checkout-scherm.
We Love Web