CASES

Het werk, met de namen erbij.

Geen moodboards en geen "verhoogde merkbeleving". Welke shop het is, wat er stond, en wat wij eraan doen. Waar cijfers staan, zijn ze gemeten.

Filter cases

DEVELOPMENT · CONSULTANCY

BMN Bouwmaterialen: drie webshops en een bestel-app op één catalogus

Voor BMN werken we aan de B2B-webshops van BMN, Van Keulen en BMN IJzerwaren, en aan BMN Connect, de bestel-app voor op de bouwplaats. Alles draait op één Adobe Commerce-installatie met één catalogus van bijna 200.000 producten, en Business Central als ERP. Bouwmaterialen zijn een van de lastigste categorieën die er zijn: elke klant zijn eigen prijzen en contractartikelen, en eenheden en verpakkingen die per artikel verschillen.

  • Een eigen Akeneo-import, omdat de standaardconnector het niet meer trok: die kost per productfamilie vijf minuten, ook als er één regel veranderd is, en met 1.600 families en tot 130.000 gewijzigde producten per dag duurde elke run 34 tot 120 uur. Onze sync schrijft alleen wat echt verschilt, levert aantoonbaar waarde voor waarde hetzelfde op als de connector, en zet de volledige catalogus in anderhalf uur neer. Een import die faalt of vastloopt, slaat alarm.
  • Realtime klantprijzen uit Business Central voor zo'n 90.000 klantbedrijven, elk met eigen afspraken. Een cachelaag die per klant klopt met wat de shop mag laten zien, en een koppeling waarbij een traag of onbereikbaar ERP de shop nooit onderuit haalt.
  • De BMN Partner API: inkoopplatforms halen realtime de onderhandelde prijzen van hun klanten op en zetten bestellingen direct klaar in de webshop. Elke partner krijgt per klantbedrijf een eigen willekeurige sleutel, dus geen klant-id's of e-mailadressen in het contract en geen partner die de prijzen van een ander kan opvragen. Daarnaast punchout (OCI) voor inkopers die vanuit hun eigen systeem bestellen.
  • Twee frontends op één backend: een React-storefront op Adobe PWA Studio voor de webshops en een Nuxt-app voor Connect. Alle bedrijfslogica zit achter GraphQL in plaats van in de frontend, zodat prijs, assortiment en eenheden in beide kanalen exact dezelfde regels volgen.
  • Niet alleen bouwen: refinement en inschattingen van de backlog, code review op elke pull request, en een CI-straat met statische analyse en tests voordat iets naar acceptatie gaat.
De homepage van bmn.nl: navigatie per productgroep, zoekbalk en het blok om klant te worden
Adobe Commerce
PLATFORM
Business Central
ERP
196.000
PRODUCTEN
90.000
KLANTBEDRIJVEN

NIEUWBOUW · FULL STACK

FarWay Stables: een paardenstal met de techniek van een webshop

Voor FarWay Stables in Nistelrode, met sportpaarden, Quarter Horses en American Miniature Horses, bouwden we de site van de grond af op. Aan de voorkant een showroom met grote foto's en video. Daaronder draait wat je eerder bij een webshop verwacht: een catalogus in twee talen op twee domeinen, een eigen media-pipeline, uploads van honderden megabytes via het contactformulier, en een feed die elk paard automatisch op Marktplaats en 2dehands zet en er weer afhaalt zodra het verkocht is. Alles op Cloudflare Workers, zonder server om te beheren.

  • Een koppeling met iCAS, de feed-API van Adevinta achter Marktplaats en 2dehands. Elk paard gaat als advertentie de deur uit, met de kenmerken die de categorie verwacht en een budget dat de importregels overleeft. Verkocht betekent offline, zonder dat iemand een advertentie aanraakt. De eerste import plaatste nul advertenties; elke les daaruit staat nu in een test.
  • Uploads van honderden megabytes via het contactformulier, op een platform dat elke request boven de 100 MB weigert en een Worker 128 MB geheugen geeft. De browser knipt elk bestand in stukken van 8 MiB, de server zet ze in een private R2-bucket weer aan elkaar, en de mail bevat links in plaats van bijlagen.
  • Foto's en video gaan rechtstreeks van de telefoon naar de site: zet de camera-exports van een paard in een map, HEIC, MOV, welke bestandsnamen dan ook, en één commando maakt er alles van wat de pagina nodig heeft. Foto's gaan van Display P3 naar sRGB, krijgen hun rotatie ingebakken en een vaste kleurcorrectie, en komen eruit in vijf WebP-formaten. Clips worden AV1 met een H.264-versie voor oudere Safari en een posterframe. GPS-gegevens gaan er bewust af, zodat de locatie van de wei niet op internet belandt.
  • Video in 4K-kwaliteit via R2 en een eigen domein voor media. Cloudflare weigert elk statisch bestand boven de 25 MiB, en binnen dat plafond werden de benen van een paard in draf een vlek.
  • Vindbaar voor Google en voor AI-assistenten: twee domeinen met hreflang, gestructureerde data per paard, /llms.txt en IndexNow na elke deploy. Turnstile tegen spam en Brevo voor de mail.
De aanbodpagina van farway-stables.nl: paarden te koop, met filters per discipline en grote foto's per paard
Nuxt · Workers
STACK
R2 · D1
OPSLAG
NL / EN
TALEN
Camera → web
MEDIA

AI · WERKWIJZE

AI in elke opdracht, niet alleen in de offerte

AI is bij ons geen apart product, maar gewoon onze manier van werken. Bij elke klant werken agents mee, van een webshop op één server tot een Adobe Commerce-platform met drie storefronts en een ERP erachter. Ze lezen logs, reviewen code, zoeken uit waar een ticket echt over gaat en bouwen zelfstandig waar dat kan. Wat we bij een klant neerzetten, hebben we eerst zelf in productie gehad.

Elke klant
INZET
Elke PR
CODE REVIEW
Dagelijks
ROUTINES
Claude Code
STACK

HET WERK

  • Storingsanalyse: een agent leest slow logs, servermetrics en applicatielogs naast de code. Lege pagina's, trage zoekopdrachten en nachtelijke uitval zijn zo vaak binnen het uur terug te voeren op één query of één regel config.
  • Code review op elke pull request, van onszelf en van het team van de klant, op de codeerstandaarden van het project zelf. Bij het grootste team elk half uur een ronde over vier repositories, die schoon werk ook doorzet naar test.
  • Ticketvoorbereiding en inschatting: tickets worden in de echte code en op productie uitgezocht voordat het team ze bespreekt, met een onderbouwde schatting op basis van honderden eerder geschatte tickets.
  • Autonome ontwikkeling: een ticket met het juiste label wordt zelfstandig gebouwd, van branch en code tot checks, pull requests en testscenario. Het eerste stond binnen elf minuten klaar en kwam in één keer door QA en review.
  • Overnames en upgrades sneller in kaart: modules vergeleken met hun origineel, changelogs en patches doorgelezen, en per repository één set AI-richtlijnen met vangrails op wat een agent mag pushen en mergen.

DOORONTWIKKELING · TRACKING

HV Equestrian: vier merken, één installatie

HV Polo, Euro-Star, HV Society en Imperial Riding draaien samen op één Magento-installatie met een Hyvä-frontend. Groothandel en consument naast elkaar, per merk een eigen website en eigen catalogus, maar één codebase om te onderhouden en één plek om te patchen. Wij namen de doorontwikkeling van die bestaande bouw over en brachten meten en kwaliteitsbewaking op orde.

4
MERKEN
Hyvä
FRONTEND
Multistore
OPZET
GA4 · Meta CAPI
TRACKING

HET WERK

  • Meta Pixel met Conversions API server-side werkend gemaakt op Hyvä, inclusief advanced matching, ter vervanging van een extensie die het niet meer deed.
  • GA4-aankoopevents die echt aankomen: de bedankpagina van Hyvä Checkout stond in de full-page cache, waardoor aankopen niet werden gemeld.
  • Actieprijzen op productkaart en productpagina gerepareerd, met een override voor een bug in Magento's special-price resolver, en het theme ontdaan van ongebruikte stylesheets en een compleet ongebruikt parent-theme.
  • Checkout en vertrouwen: Apple Pay- en Klarna-logo's bij de betaalmethoden, Trusted Shops-badge, en een REST-API die geen ongewenste uploads meer accepteert.
  • GrumPHP, PHP-CS-Fixer en PHPMD als git-hooks, dependency-updates en core-fixes via composer-patches, en een post-deployscript zodat een release geen handwerk meer is.

OVERNAME · MODERNISERING

Boeties: een codebase die weer te lezen is

Begin 2026 overgenomen van een ander bureau. Zulke trajecten beginnen zelden met nieuwe features: eerst moet de code weer voorspelbaar worden en de shop veilig bij te werken. Daarna begint het speurwerk: waarom pagina's traag zijn en links breken, meestal in extensies waar al jaren niemand meer naar had gekeken. Sindsdien draait Boeties op actuele Magento- en PHP-versies, wordt elke securitypatch kort na publicatie uitgerold en gaat een pull request pas door als hij schoon is.

Magento 2
PLATFORM
−85%
QUERIES CATEGORIE
Deployer · CI
DEPLOYS
Overname
TYPE

HET WERK

  • Categoriepagina's die 8.380 databasequeries deden, doen er nu 1.272. Een extensie voor voorraadlabels haakte in op elk templateblok, las het kant-en-klare productoverzicht terug in als HTML en laadde elk product opnieuw, met 36 attributen per product. We hebben het label in de overzichtstemplate zelf gezet, behouden voor de 254 producten die het gebruiken, en onderweg een bug opgelost die uitverkochte producten "op voorraad" noemde.
  • Filters op merkpagina's deden niets, en elke klik plakte er een stuk achter het adres bij tot er /merken/<merk>/rond/rond/vierkant/punt stond. De oorzaak was URL-afhandeling die in de overgenomen code was uitgezet. Die staat weer aan, en de merkrouter is gepatcht zodat een kapot adres een 404 geeft in plaats van de bezoeker vast te houden.
  • Zestien Mageplaza-modules van een gekopieerde app/code terug naar Composer. Een gewone diff liet zo'n 270 gewijzigde bestanden zien, bijna allemaal opmaakwijzigingen, dus hebben we de code token voor token vergeleken: twee wijzigingen waren echt. Diezelfde reformat had één adminscript gebroken, waardoor elk formulier in de admin eindeloos bleef laden zonder één foutmelding in welke log dan ook.
  • Van handmatig deployen naar Bitbucket Pipelines met Deployer: staging, acceptatie en productie uit dezelfde pipeline, met drie releases om op terug te vallen. Magento en PHP op actuele versies, en de dode extensies eruit.
  • Securitypatches van Adobe steeds kort na publicatie, plus een eigen mitigatie voor StyleSmuggler voordat de patch er was.
  • Meten en vindbaarheid: GA4 via Tag Manager, Meta Conversions API, en structured data met de juiste prijs inclusief btw voor Google Shopping, voor configureerbare, gegroepeerde en bundelproducten.

HOSTING · PERFORMANCE

45kmParts: onderdelen, twee btw-regimes en een cachestorm

Niet elke shop is Magento. Deze draait op PrestaShop, op een server die wij beheren, met een catalogus van ruim 11.000 onderdelen waarin gebruikte artikelen zonder btw en nieuwe met 21% naast elkaar staan. Als deze shop "plat ligt", is hij bijna nooit plat: Apache en MySQL draaien, maar de pagina's komen leeg terug. Dat soort storingen vinden wij leuk.

PrestaShop
PLATFORM
Cloudflare
EDGE
11.000+
CATALOGUS
Hosting & beheer
TYPE

HET WERK

  • De zoekfunctie deed bij elke zoekopdracht eerst een query over de hele categorie-koppeltabel, een half miljoen rijen, voordat er één trefwoord bekeken was. Een override op de zoekklasse en instant search uit: de shop en de backoffice zijn weer snel.
  • Lege pagina's met een HTTP 200: de template-cache van PrestaShop deed bij elk productoverzicht een DELETE met LIKE over een tabel van 77.000 rijen, en InnoDB las 262.000 rijen per seconde. Gevonden in de slow log, opgelost aan de bron in plaats van met een herstart.
  • Een eigen PHP-FPM-pool voor de beheeromgeving, zodat een piek in de winkel de backoffice niet meer vertraagt.
  • Cloudflare aan de voorkant: misbruik geblokkeerd via de API, want achter een proxy blokkeert een firewallregel op het serveradres niets. En expliciete cache-headers, zodat Safari niet eindeloos een oude productpagina blijft tonen.
  • Twee btw-regimes in één catalogus: gebruikte onderdelen onder de margeregeling, nieuwe met 21%, en een productpagina die daadwerkelijk het juiste label toont.

NIEUWBOUW · DROPSHIPPING

123orgasme: een webshop zonder eigen magazijn

Een webshop in erotische artikelen zonder eigen voorraad: alles komt van groothandel EDC, die ook verstuurt. Sinds eind 2020 bouwen, hosten en onderhouden we de Magento 2-shop. Het lastige zit in de koppeling. Assortiment, prijzen en voorraad moeten kloppen met een leverancier die je niet in de hand hebt, en elke bestelling moet zonder handwerk bij hem aankomen en met een track & trace terugkomen.

Magento 2
PLATFORM
EDC
LEVERANCIER
2020
SINDS
Eigen beheer
HOSTING

HET WERK

  • Een eigen EDC-import: producten, prijzen en voorraad uit de XML-feed van de groothandel, in batches in plaats van product voor product, met een rapport over wat de feed bevatte. Een artikel dat uit de feed verdwijnt gaat offline en komt vanzelf terug zodra er weer voorraad is, ook als het onder een configureerbaar hoofdproduct hangt.
  • Orders gaan automatisch naar EDC zodra ze geplaatst zijn. Verstuurt EDC, dan komt de status via een webhook terug: de zending wordt aangemaakt met track & trace, en bij een gedeeltelijke levering gaat er een melding uit.
  • Voorraad via Magento's Multi-Source Inventory, met een herstelroute voor de inconsistenties die MSI na grote imports achterlaat, en producten die op EAN worden gematcht naast de SKU van de leverancier.
  • Hosting in eigen beheer achter Cloudflare, met Varnish, zoeken op OpenSearch en fail2ban-regels die een scanner op accountniveau blokkeren: betrapt op deze shop betekent geblokkeerd op al onze sites.
  • Deploys via Deployer en Bitbucket Pipelines met een SonarCloud-scan, de upgrade naar Magento 2.4.8 en PHP 8.3, en affiliatetracking via Tradetracker.

NIEUWBOUW · STORYBLOK

Brommobiel Boxtel: een voorraad die de dealer zelf bijhoudt

Een dealer in brommobielen, nieuw en gebruikt, met een werkplaats en inkoop. De site is een Nuxt-applicatie op Cloudflare Workers met de voorraad in Storyblok: de dealer voert een auto in met prijs, bouwjaar, kilometerstand, garantie en bij elektrische modellen het accutype, en de site doet de rest. In zes talen, want de klanten komen ook uit Duitsland, Polen en Spanje. Onderweg is het bedrijf van naam veranderd; de site ging mee, met de oude domeinen netjes doorverwezen.

Nuxt · Vue
FRONTEND
Storyblok
CONTENT
Cloudflare
HOSTING
6
TALEN

HET WERK

  • Een contentmodel voor auto's dat de dealer zonder ontwikkelaar bijhoudt: een status Verkocht met een lint over de foto, garantie, en een accutype dat alleen verschijnt als de brandstof elektrisch is.
  • Zes talen zonder zes keer werk: velden die niet vertaald hoeven te worden (prijs, bouwjaar, kilometers) staan één keer in Storyblok, de teksten eromheen komen uit i18n.
  • Foto's via de image service van Storyblok, met een watermerk en de juiste maten per plek, en een lightbox die ook op een telefoon werkt.
  • Een rebranding halverwege: van Mobiliteitscenter Perry Verbruggen naar Brommobiel Boxtel, inclusief nieuwe domeinen, doorverwijzingen van de oude en een sitemap die de zoekmachines meenam.
  • LCP-werk met Lighthouse als acceptatietest, contact- en nieuwsbriefformulier aan de serverkant, en een WhatsApp-knop omdat brommobielkopers bellen en appen, niet mailen.

OVERNAME · MIGRATIE

Vetus: een dealerportaal overgenomen en verhuisd

Vetus maakt scheepssystemen en verkoopt via dealers wereldwijd. Het dealerportaal draait op een Magento-backend die via GraphQL wordt aangesproken, met Business Central als ERP voor prijzen, voorraad en orders. Wij namen de codebase in 2024 over van het vorige bureau: eerst bijgewerkt en opgeschoond, daarna verhuisd naar een nieuwe server, en sindsdien in beheer.

Magento 2
PLATFORM
Business Central
ERP
Hypernode
HOSTING
2024
SINDS

HET WERK

  • Magento en PHP naar actuele versies, en de fouten en waarschuwingen in elke maatwerkmodule van het vorige bureau weggewerkt voordat er iets nieuws bij kwam.
  • Een verhuizing naar een nieuwe productieserver met een generale repetitie vooraf: syncscripts voor database en media, een migratieplan stap voor stap, en een productiedatabase waarvan de dubbele URL-rewrites eerst ontdubbeld moesten worden, anders was de nieuwe server nooit opgestart.
  • Van handmatig uploaden naar een deploy-pipeline in Bitbucket, en foutmonitoring met Flare zodat een fout bij een dealer bij ons binnenkomt voordat de dealer belt.
  • De dingen die een dealerportaal stilleggen: inloggen dat na één mislukte poging blokkeerde, add-to-cart met bijzondere tekens in namen, een vastgelopen index, time-outs onder belasting en een SOAP-koppeling die de orderhistorie niet meer laadde.
  • Zoeken vervangen door Algolia, met de categorie-index uitgezet omdat die op deze catalogus meer kapotmaakte dan opleverde.

REPLATFORM · LEAD DEVELOPMENT

ChromeBurner: van kleine webshop naar miljoenenbedrijf

Een internationale webshop voor motorkleding en -accessoires, die draaide op één oude server die door één persoon werd beheerd. Als lead developer waren we verantwoordelijk voor alles wat met IT te maken had, en stuurden we het team aan. In die jaren groeide ChromeBurner van een kleine webshop uit tot een bedrijf met een omzet in de miljoenen, en het platform groeide mee.

Magento 1 → 2
MIGRATIE
Lead developer
ROL
Zero downtime
DEPLOYS
Miljoenen
OMZET

HET WERK

  • Van Magento 1 naar Magento 2: een volledige replatform van een internationale shop, terwijl die gewoon bleef verkopen.
  • Van één server met één beheerder naar een gerenommeerde hostingpartij. Daarmee hing de shop niet langer af van de kennis en de beschikbaarheid van één persoon.
  • Zero-downtime deployments: een release werd een routine in plaats van een avondklus met de shop in onderhoudsmodus.
  • Een werkwijze waar die er niet was: tickets in Jira, alle code in Git op Bitbucket, en daarmee voor het eerst zicht op wat er gebouwd werd en waarom.
  • Eindverantwoordelijk voor alle IT, van hosting en koppelingen tot de developers die eraan werkten, zodat het platform de groei naar een miljoenenomzet kon dragen.

REPLATFORM · DOORONTWIKKELING

Gazelle: een fietsmerk van Adobe Commerce Cloud naar Hypernode

Van eind 2022 tot 2025 werkten we als externe developer, ingehuurd door Pon, mee in het team achter de B2C-webshops van Gazelle: ruim duizend commits over meer dan 120 tickets, in een codebase met 27.000 commits geschiedenis. Een fiets is geen gewoon product. Elk model komt in framematen, accu's, remmen en wielmaten, met een eigen prijs per combinatie, verkocht in landen met kilometers en landen met mijlen, en ook via lease. En onder dat alles hebben we het platform zelf verhuisd.

Magento 2
PLATFORM
Hypernode
HOSTING
Storyblok
CMS
1.000+
COMMITS

HET WERK

  • Van Adobe Commerce Cloud naar Magento Open Source op Hypernode: de Enterprise-modules eruit, de data omgezet, en een nieuwe deploystraat met Deployer en automatische pipelines, een database-sync voor staging, monitoring en een Slack-melding bij elke release.
  • Storyblok in Magento: een eigen extensie die verhalen uit Storyblok importeert, er URL-rewrites voor aanmaakt en de content rendert in Magento-pagina's en statische blokken. Marketing bouwt pagina's zonder developer, en de shop blijft één site.
  • De fietsconfigurator: accu's, framematen, remmen en wielmaten als keuzes, met een meerprijs per optie en de goedkoopste accu als startpunt. Geleverd via een API aan de losse productpagina-frontend, met een cacheflush per product vanuit de backend.
  • De PIM-import: producten, prijzen per winkel en voorraad inclusief accu's, met attribuutmapping, prijsvalidatie en metrisch naast imperiaal, zodat een Britse klant het bereik van zijn e-bike in mijlen ziet.
  • Lease als volwaardig verkoopkanaal: Lease a Bike als betaalmethode, een eigen voorraadstatus met levertijd voor lease, en de laagste leaseprijs berekend over alle varianten. Daarnaast de overstap naar PHP 8.1 en de upgrade naar Magento 2.4.7.

HOSTING · DEVOPS

Acknowledge: een Kubernetes-stack op maat voor Magento

Een B2B-webshop voor IT-hardware op Magento 2, gebouwd door een ander bureau. Voor Acknowledge ontwierpen en bouwden we een eigen Kubernetes-stack, op maat gemaakt voor het hosten van Magento.

Magento 2
PLATFORM
Kubernetes
STACK
Hosting
TYPE
2023
JAAR

HOSTING · MIGRATIE

Brick Fever: een shop die elke avond om acht uur omviel

Een webshop in Lego-onderdelen op WooCommerce, gekoppeld aan de marktplaatsen BrickOwl, BrickLink en BrickScout en aan de kassa in de winkel. De vraag was klein en concreet: mail die in de spam belandde en een site die elke avond rond acht uur wegviel, op gedeelde hosting waar niemand kon zien waarom. Het antwoord was een verhuizing.

WooCommerce
PLATFORM
Cloudflare
EDGE
3
MARKTPLAATSEN
2023
JAAR

HET WERK

  • Mail die aankomt: DKIM op het domein, verzending via Brevo in plaats van de webserver, en de verzendlimiet gevonden die de orderbevestigingen tegenhield.
  • Van gedeelde hosting naar een eigen server die wij beheren, met Cloudflare ervoor. Daarna was er iets te meten, en was het avondprobleem weg.
  • Opruimen: plugins uitgezet en verwijderd die niemand meer gebruikte, de XML-feed naar de marktplaatsen gerepareerd en Search Console aangesloten.

HOSTING · MONITORING

De shops die niemand ziet, omdat er niets misgaat

Het grootste deel van ons werk is geen lancering. Het zijn de webshops die al jaren draaien: securitypatches op de dag dat ze uitkomen, Magento-upgrades zonder downtime, zoekindexen die blijven werken na een OpenSearch-update, en monitoring die ons wakker maakt in plaats van de klant. Dat werk levert nooit een screenshot op, maar de meeste omzet van onze klanten hangt er wel van af.

Maandelijks
PATCHES
24/7
MONITORING
Naar ons
ESCALATIE

Wordt jouw shop de volgende case?