In deze showcase laat ik zien hoe ik tijdens mijn stage een design system heb opgebouwd.
Zet deze modus aan om de beoordelingscriteria in de tekst te highlighten en mijn verantwoording per criterium te zien.
Je maakt bij de opdracht duidelijk wat er van je gevraagd wordt en welke doelen jouw bijdragen dienen te bereiken.
Je zet relevante theorie over mensgerichte ontwerpmethodes in om jouw keuzes te onderbouwen.
Je verzamelt bij je ontwerpactiviteiten methodisch inzichten met betrekking tot de te behalen doelen en beoordeelt de toegevoegde waarde daarvan voor het beantwoorden van de ontwerpvraag.
Je formuleert heldere conclusies waar bruikbare verbetersuggesties uit voortvloeien.
Je verantwoordt de gemaakte keuzes en resultaten en communiceert dit pro-actief en helder met de belanghebbenden én begeleiders.
Hieronder onderbouw ik per criterium waarom ik eraan voldoe. Ik link steeds direct naar het bewijsmateriaal op deze pagina.
Dit gaat over het design system dat ik heb gemaakt voor de rebranding van 'Digitale Staat' (nu nog Grafische Republiek). Dat was de opdracht tijdens mijn eerdere stage. Inmiddels loop ik stage bij Like Bamboo.
Die stage is afgelopen en het project lag daarna even stil. Maar voor mijn portfolio heb ik het weer opgepakt om het alsnog af te ronden.
Het bureau had een nieuwe website nodig die hun werk beter laat zien en nieuwe klanten aantrekt. Dat betekent: een site die er professioneel uitziet en vertrouwen wekt.
Er was al een ruw concept van de homepage, maar dat was puur op gevoel gemaakt, zonder vaste regels. Ik heb daar de systematische basis voor gebouwd en getest. Het doel was dat alle toekomstige componenten op vaste afspraken worden gebouwd, niet op losse aannames.
Het doel voor het bedrijf: een strakke website die vertrouwen geeft aan nieuwe klanten.
Ik hoefde de site niet zelf te bouwen. Maar ik moest en wilde het zo opzetten dat de front-enders er later zonder gedoe mee konden beginnen.
Om te kunnen meten of het design system ook echt werkt, heb ik van tevoren toetscriteria opgesteld voor consistentie, overdraagbaarheid en schaalbaarheid.
Die criteria heb ik niet zomaar bedacht. Ze komen direct uit problemen die ik zag in de bestaande homepage, en ik heb ze daarna onderbouwd met theorie en input vanuit de praktijk.
Typografische keuzes zijn onderling consistent en herleidbaar naar een onderliggend systeem, zonder dat per component losse, niet-onderbouwde keuzes ontstaan.
ResultaatEr ontstaat een samenhangend typografisch geheel waarin hiërarchie herkenbaar en reproduceerbaar is.
Line heights volgen een consistente logica die aansluit op de typografische keuzes en worden niet willekeurig toegepast.
ResultaatTekst blijft leesbaar en visueel samenhangend over verschillende secties en componenten.
De overgang tussen mobiele en desktopweergaven is logisch opgebouwd en voorkomt abrupte, onvoorspelbare veranderingen in layout of typografie.
ResultaatEen vloeiende responsive ervaring waarbij de visuele hiërarchie ongeacht het beeldscherm behouden blijft.
Lay-outs zijn opgebouwd volgens een consistente en herkenbare structuur, waarbij uitlijning niet willekeurig afwijkt.
ResultaatComponenten kunnen zonder herinterpretaties opnieuw worden toegepast op andere pagina's en schermformaten.
Herhalende elementen zoals kleuren, lettertypes en spacing worden uitsluitend beheerd via centrale design tokens. Componenten wijken niet af van deze afgesproken fundering.
ResultaatEen voorspelbaar, makkelijk onderhoudbaar systeem: developers kunnen waarden één-op-één overnemen zonder giswerk, wat zorgt voor feilloze uniformiteit.
En hoe zorg ik dat dit systeem schaalbaar is over verschillende pagina's en apparaten, en helder overdraagbaar naar development?
Er was al een ruw ontwerp voor de homepage, maar daar zat geen enkele regel in.
En dat merk je meteen, want dan krijg je dingen als:
Ik ben niet zomaar begonnen met ontwerpen, ik heb alles stap voor stap doorgenomen samen met mijn begeleider.
De afstand tussen twee blokken test je moeilijk met gewone gebruikers, want die merken het niet eens. Dus moest ik het anders aanpakken. Ik knipte het ontwerp op in losse onderdelen (grid, lettertypes, spacing) en besprak die met mijn stagebegeleider.
Vanuit mijn stagebegeleider kreeg ik randvoorwaarden:
Een vaste wiskundige verhouding voor lettergroottes werkt beter dan elke keer maar wat intypen.
Het probleem destijdsEerder werden lettergroottes gewoon op gevoel gekozen. Dat zorgde ervoor dat de hiërarchie vervaagde en het geheel er rommelig uitzag.
Testen met de stagebegeleider BC 8.3.1Samen met mijn begeleider heb ik in Figma vier rekenschalen naast elkaar gezet. De Minor Third (×1.200) groeide te langzaam: titels leken qua grootte te veel op gewone tekst. De Perfect Fourth (×1.333) gaf precies het contrast dat we zochten, zonder dat het op telefoons lelijk ging breken.
ResultaatWe kozen voor de 1.333-verhouding. Dat leverde deze vaste formaten op:
Mensen lezen webpagina's niet echt; ze scannen. Omdat deze formaten wiskundig flink uit elkaar liggen, herkent je brein direct wat de hoofdtitel is en wat ondersteunende tekst. En doordat er geen tussenmaten bestaan in het systeem, blijft de hiërarchie altijd helder (NN/g Scanning).
Bezoekers scannen meer dan dat ze lezen. Door een vaste ratio als 1.333 te gebruiken, ontstaat er binnen een fractie van een seconde onbewust structuur in het hoofd van de bezoeker.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
Grote titels hebben veel minder tussenruimte nodig dan gewone leestekst.
Het probleemEerst had alles gewoon een line-height op gevoel.
Experimenten BC 8.3.1Ik pakte de zes typografische formaten erbij en testte handmatig wat er gebeurde bij verschillende line-height waarden, van 1.0 tot 1.6.
Resultaat & Het inzichtKort gezegd: gewone paragrafen (16px) kregen ruime tussenruimte (1.5). Maar bij grote titels trok ik de regels steeds dichter naar elkaar toe (1.1 tot 1.0).
Want als je dat niet apart instelt, kan een lezer niet goed zien dat twee regels van een grote titel bij elkaar horen.
De 'Law of Proximity' zegt dat dingen die dicht bij elkaar staan als één geheel worden gezien. Daarom trek je grote titels strak naar 1.0. Maar kleine leesteksten hebben juist lucht nodig, volgens WCAG (toegankelijkheid) worden ze onleesbaar bij zo'n krappe line-height, omdat regels dan in elkaar overlopen. Die moeten dus 1.4 tot 1.6 krijgen.
Op school had ik altijd geleerd: "Neem niet zomaar alles één-op-één over van desktop naar mobiel. Speel met de layout." Dus ging ik flink experimenteren met de mobiele weergave.
Het probleem destijdsMaar die experimenten werden door mijn begeleider helemaal niet gewaardeerd. Doordat ik voor mobiel allerlei custom uitsnedes en layout-trucjes ging verzinnen, liepen desktop en mobiel steeds verder uit elkaar.
Experimenten BC 3.1Hiernaast staan drie iteraties naast elkaar. Je ziet hoe het experimenteren misliep en wat het eindresultaat moest worden. Versie 1 was mijn eerste poging, versie 2 een volgende iteratie, en versie 3 het logische, definitieve resultaat.
ResultaatIn de iteraties hiernaast zie je wat die experimenten visueel deden, en waarom we bij versie 3 teruggingen naar dezelfde componenten als op desktop, maar dan afgeschaald.
Jakob's Law zegt: gebruikers verwachten dat jouw product zich gedraagt zoals andere producten. Door geen rare uitzonderingen te maken en één schaal aan te houden voor elk apparaat, sluit je aan bij wat de gebruiker verwacht.
Een vast grid werkt veel beter dan blokken zomaar op gevoel op de pagina zetten.
Het probleem destijdsZonder grid ontstonden er constant kleine, slordige foutjes in Figma. Een tekstblok stond net 5 pixels verder naar links dan het andere. Dat maakte de pagina onrustig.
Hoe ik dit testte BC 3.1Ik testte drie opties: (A) helemaal geen grid en gewoon op gevoel werken, (B) het klassieke 12-koloms grid, en (C) een 10-koloms grid.
ResultaatHet 12-koloms grid was zonder twijfel de beste oplossing. Het is makkelijk op te delen: twee blokken van 6, of drie van 4 op mobiel. Elke layout past er netjes in.
Zonder een strak grid wordt digitaal design al snel een rommeltje. Door het overal toe te passen bleef alles consistent en overzichtelijk.
Google's Material Design laat zien dat een 12-koloms grid heel goed werkt als je later responsive moet gaan bouwen (tablet en mobiel). Het schaalt gewoon mee. En zoals Dieter Rams zei: "Goed design is zo min mogelijk design." Een grid helpt om het scherm overzichtelijk in te delen, zonder dat je steeds elke pixel handmatig moet plaatsen.
Iets wordt pas herkenbaar als je het consequent vastlegt. Elke kleur, elke schaduw die moeten ergens centraal staan.
Het probleem destijdsIedereen werkte op zijn eigen manier. Kleuren werden rechtstreeks in Figma ingetikt, waardoor we achteraf merkten dat een knop op de ene pagina net een andere ronding had dan op de andere.
ResultaatDit is wat er uiteindelijk uit kwam:
Het systeem draait om een donkerblauw (Navy) basispalet met opvallende neon-accenten (Teal en Cyan). Op mobiel wordt de beschikbare breedte benut met een vaste padding van 24px, op desktop met asymmetrische blokken en ruime gutters. Actie-elementen hebben vaste border-radii (4px voor knoppen, 8px voor tags) die op elk scherm gelijk blijven.
Wat inzicht opleverdeEen systeem werkt pas als je alles centraal vastzet in tokens (variabelen). Dat haalt twijfel weg en voorkomt eindeloze discussies tussen designers en developers.
Dit screenshot toont aan hoe de afgesproken typography properties keihard zijn vastgeschroefd als Figma Styles.
Dit noem je Atomic Design, bedacht door Brad Frost. Er zijn atomen: de kleinste bouwstenen, zoals één specifieke kleur. Combineer je die, dan krijg je moleculen, bijvoorbeeld een knop. Bundel je dat weer samen, dan krijg je organismen: de webpagina. Door die kleinste atomen foutloos vast te leggen (Design Tokens, een term van Salesforce) bouw je een systeem dat zichzelf veilig kan opschalen.
Actieknoppen (Solid/Outline)
Tags, kleine kaarten en outline-elementen
Zeer lichte afronding of juist harde hoeken
Hieronder zie je de homepage: links het concept dat op gevoel was gemaakt, en rechts hoe het eruitziet nadat we de wiskundige regels van het design system eroverheen legden.
Op het eerste gezicht lijkt het bijna hetzelfde. Maar onder de motorkap is nu alles logisch uitgelijnd. Geen losse tekstformaten meer, alles staat keurig op het grid. Dat scheelt developers straks een hoop hoofdpijn.
Ik heb eerlijk gekeken naar waar front-end developers straks tegenaan lopen. Welke afspraken ontbreken er nog? De knelpunten heb ik benoemd en vertaald naar concrete actiepunten voor de nabouwfase.
Zo weten ze precies welke valkuilen ze moeten vermijden.
Bij de overdracht naar development ontstond verwarring over de namen van variabelen. Ik had ze beschrijvend gedocumenteerd (bijvoorbeeld 'Dark Blue'). Maar zulke namen werken niet als je later theming of dark modes wilt toevoegen.
Directe oplossing: Gebruik semantische namen voor alle tokens
(bijvoorbeeld color-background-primary). Koppel die één-op-één aan de CSS-variabelen van het
dev-team, in plaats van hexcodes. Dat voorkomt dat iedereen het anders interpreteert en maakt het systeem
schaalbaar.
De vaste typografische schaal (×1.333) werkte prima op desktop. Maar op mobiel (390 pixels breed) ging het mis: koppen braken af op plekken waar je het niet verwacht. Het scherm was simpelweg te smal voor de grote formaten.
Taak voor de developers: Gebruik fluid typography via CSS
clamp(). Laat de lettergroottes meeschalen met het scherm, van een minimum (Minor Third, 1.200)
tot het originele doel (Perfect Fourth, 1.333). Zo blijft de hiërarchie intact zonder dat je per breakpoint
aparte waarden hoeft in te stellen.
Doordat ik alles in Figma netjes heb dichtgetimmerd, hoeven developers niet meer te gokken. Ze kunnen elke afspraak direct overnemen in hun code.
Het Figma-bestand is bewust gestructureerd op A4-formaat, met duidelijke naamconventies per token en beschrijvingen bij elk component. Het lettertype waarin alles is opgemaakt is hetzelfde als het lettertype van het ontwerp, zodat het bestand niet alleen documentatie is maar ook visueel klopt. Zo kan iemand die het bestand opent direct zien welke tokens er zijn, hoe componenten zijn opgebouwd en waarom bepaalde waarden zijn gekozen.
De website is gegaan van 'een gevoel' naar een set stevige, onbreekbare funderingen. Iets wat het development team in één keer kan oppikken.
Doordat elke marge, lettergrootte en kleur vastzit in logische variabelen, gaat er aan de achterkant veel minder mis.
Hieronder kijk ik volgens de STARR-methodiek terug op wat ik heb geleerd bij het bouwen van dit design system.
Toen ik begon met mijn stage, moest ik een overkoepelend digitaal fundament maken voor de website van Grafische Republiek. Tot dat moment was ik gewend om per los scherm te werken: als het er goed uitzag, was het af.
Het ging er niet om mooie schermen te maken, maar om strikte, herbruikbare bouwblokken vast te leggen (tokens en atomen). Die moesten wiskundig kloppen en zo opgebouwd zijn dat developers ze konden overnemen zonder dat er onverwachte dingen misgingen.
Ik heb mijn werkwijze behoorlijk omgegooid. Ik dwong mezelf om elk font-weight, elke rand en spacing vast te leggen. Als een knop of marge in Figma 'net iets lekkerder' zou vallen met 2 pixels verschil, paste ik het niet zomaar lokaal aan. Ik checkte eerst of het via de globale variabelen opgelost kon worden, en of dat ook voor alle andere componenten zou werken.
Eerlijk gezegd: in het begin voelde dit alsof ik mijn eigen creatieve vrijheid aan het inperken was. Maar door diezelfde structuur verdwenen in de eerste sprints bijna alle nutteloze discussies met developers over pixelafstanden. Ik bouwde sneller en de visuele ruis ging flink omlaag. Het eindresultaat was consistenter en toegankelijker dan alles wat ik op school 'op gevoel' had gemaakt.
Als ik terugkijk snap ik nu het verschil tussen mooie plaatjes maken en echt digitaal design neerzetten. De waarde zit niet in hoe het eruitziet, maar in de overdraagbare logica erachter. Mijn valkuil was dat ik me blindstaarde op visuele perfectie in mijn eigen Figma-bestand. Bij volgende opdrachten stap ik eerder uit het canvas en denk ik vanuit de developer: eerst de logica vastleggen, dan pas ontwerpen.
De theorie en de fundamenten achter de structuur en kaders die ik heb gebruikt:
Onderbouwing voor
de focus op hiërarchie: gebruikers brengen de meeste tijd door op ándere sites, dus
best-practices en herkenbare interactiepatronen zijn altijd de veiligste keuze.
Bekijk het NN/g artikel over
Jakob's Law ↑
Objecten die
dicht bij elkaar staan worden door het brein als één groep gezien. Dit principe stuurt de
marge-tabellen aan (bijv. 8px voor een knop vs. 75px voor witruimte tussen secties).
Lees over the
Law of Proximity ↑
Richtlijn 1.4.12
over Text Spacing. Hierin staan de minimale afstanden (zoals line-height van minimaal 1.5x de font size)
die nodig zijn voor leesbare en toegankelijke tekst.
Raadpleeg WCAG 1.4.12 Text
Spacing ↑
Het grid-framework
dat de wiskundige onderbouwing geeft voor 4-koloms (mobiel) en 12-koloms (desktop) indelingen, vloeiende
schaalfuncties en consistente marges.
Bekijk het Material Design
Layout Grid ↑