2026 · Marktplaats · Nederland

jouwdrank.nl, een marktplaats voor drank met de regels in de code

Slijterijen en lokale brouwers verkopen er online, elk onder hun eigen vergunning. Het platform bemiddelt, de winkel blijft de verkoper. Alcohol online verkopen is streng gereguleerd, dus de regels zitten in de code zelf, met tests als bewijs. Ontwerp, architectuur en bouw doe ik.

In ontwikkeling en nog niet live met echte betalingen. Wat hieronder staat is gebouwd en wordt door tests bewaakt. De koppelingen met de betaalprovider, iDIN en de vervoerder staan klaar achter een schakelaar en gaan pas aan bij de lancering.

6 van 24plekken per winkel op de eerste pagina, bij 10 of 10.000 producten
1uitbetaling, ook als die twee keer tegelijk start
18+op elke doos met alcohol, verzenden pas na bevestiging
van 13,6 naar 5,9 sLCP van de homepage in de labmeting

Evenveel plek voor de kleinste winkel

Bij een audit kreeg een winkel met 10.000 producten bij zoeken 21 van de 24 plekken op de eerste pagina, en een winkel met 10 producten geen enkele. De omvang van een assortiment mag geen voorsprong geven, dus dat is aangepast.

Zonder zoekterm komen winkels om de beurt aan bod. In de test met winkels van 10, 100, 1.000 en 10.000 producten krijgt elk precies 6 plekken. Met een zoekterm gaat relevantie voor en wisselen even relevante resultaten af per winkel; de test eist dan 5 tot 7 plekken per winkel, en een exacte naamtreffer blijft bovenaan.

Geld dat maar één keer beweegt

Een bestelling gaat pas op betaald als het ontvangen bedrag precies gelijk is aan wat er openstaat. Wijkt het af, dan krijgt beheer een melding en verandert er niets.

Een uitbetaling wordt eerst in de database geclaimd en pas daarna aan de betaalprovider gevraagd, met een vaste idempotency-sleutel. Twee gelijktijdige uitbetalingen worden zo één. Een dubbele klik op betalen opent één betaling, en twee webhooks die tegelijk binnenkomen geven één statuswissel en één bevestigingsmail.

Een bestelling bij drie winkels van 45, 80 en 25 euro wordt tot op de cent verdeeld. De testbetaling weigert op de server zodra echte betalingen aanstaan.

Leeftijdsbescherming in lagen

Eén vinkje is te makkelijk te omzeilen. Bij het bestellen bevestigt iDIN via de eigen bank alleen of iemand 18 jaar of ouder is, verder niets.

Op elke doos met alcohol komt een 18+-sticker, vier per A4 te printen uit het verkopersportaal. Een winkel kan een bestelling pas als verzonden markeren na de bevestiging dat de sticker erop zit, en dat tijdstip wordt bewaard als bewijs. Bij de lancering komt de leeftijdscheck van de vervoerder aan de deur erbij.

Rechten per rol, bewaakt door een test

Elke route en elke server action staat in een autorisatiematrix met de rol die hem mag aanroepen. Komt er een route bij zonder regel, dan faalt de test. Dezelfde test controleert dat elke beheer-, verkopers- en klantroute de controle van zijn rol ook echt uitvoert.

Kwaliteit die de deploy tegenhoudt

Playwright loopt de klantroute en het verkopersportaal na, axe-core controleert de toegankelijkheid en Lighthouse bewaakt minimale scores. De deploy naar staging wacht op alle drie.

De LCP van de homepage ging in de labmeting van 13,6 naar 5,9 seconden, die van een categoriepagina van 4,4 naar 2,5. Foto’s die te vroeg laadden, laden nu lui en zijn opnieuw gecomprimeerd.

Wat nog open staat

Een loadtest met gelijktijdige checkouts en een penetratietest staan nog op de planning. Tot die er zijn, staat hier niets over schaal.

Werk