Direct naar inhoud
GRØNN — Designing Living Ecosystems

Techniek

Waar deze sitewerkelijk van gemaakt is.

Negentien keuzes, vier lagen, en de afweging die elke keuze meebrengt. Kies een laag om de weergave te versmallen, open een techniek om te lezen waarom die er is en wat die kost.

01Lagen

Selecteer een laag om te filteren en open daarna een techniek voor de redenering erachter.

Alle lagen tegelijk — de volledige opbouw, van boven naar beneden.

02Technieken

18 van 18 getoond

  • next 16.2.10

    Het raamwerk: App Router, servercomponenten, één build, één deploy.

    Gedeeld met Equilibrium

  • react 19.2.4react-dom 19.2.4

    De UI-runtime — servercomponenten voor de schil, clientcomponenten voor alles waar een hand aan zit.

    Gedeeld met Equilibrium

  • tailwindcss ^4

    Het ontwerpsysteem: vijf paletten uit één set semantische tokens.

    Gedeeld met Equilibrium

  • framer-motion ^12.42.2

    Elke animatie op de site, van de onthulling van de koppen tot de kaarten die op deze pagina opengaan.

    Gedeeld met Equilibrium

  • lenis ^1.3.25

    Vloeiend scrollen — de traagheid onder elke pagina.

    Gedeeld met Equilibrium

  • three ^0.185.1@react-three/fiber ^9.6.1

    Het 3D-terrein, geschreven als React-componenten in plaats van imperatieve scènecode.

    Gedeeld met Equilibrium

  • next-themes ^0.4.6

    Paletwissels — Paper, Weide, Bos, Nacht en Nocturne — als een klasse op het document.

    Alleen deze site

  • lucide-react ^1.23.0

    De iconenset: pijlen, chevrons en statusmarkeringen.

    Alleen deze site

  • clsx ^2.1.1tailwind-merge ^3.6.0

    Voorwaardelijke klassenamen, waarbij latere utilities eerdere terecht verslaan.

    Alleen deze site

  • Platform

    Hosting, CDN en deploys. Een push naar de main-branch is een productierelease.

    Gedeeld met Equilibrium

  • @vercel/blob ^2.6.1

    De private opslag met het gepubliceerde contentdocument en de geüploade foto's van de studio.

    Gedeeld met Equilibrium

  • Zelf gebouwd

    Bewerken op de live site: inloggen, op elke zin klikken, hem in beide talen herschrijven, publiceren.

    Alleen deze site

  • next-auth ^4.24.14

    De Google-login die de editor bewaakt — een toegangslijst van precies één adres.

    Alleen deze site

  • typescript ^5

    De taal waarin alles geschreven is — ook de vorm van het contentdocument.

    Gedeeld met Equilibrium

  • eslint ^9eslint-config-next 16.2.10

    De lintpoort, die vóór elke pull request de eigen regelset van het framework draait.

    Alleen deze site

  • @tailwindcss/postcss ^4

    De enige buildstap tussen het stijlblad en de browser.

    Gedeeld met Equilibrium

  • @types/node ^20@types/react ^19@types/react-dom ^19@types/three ^0.185.1

    Types voor de bibliotheken die er zelf geen meeleveren.

    Gedeeld met Equilibrium

  • Scripts in de repository

    Node-scripts die een headless browser aansturen: taalweergave, 3D-mounten, prestatiemetingen.

    Alleen deze site

De versienummers op deze pagina worden bij het bouwen uit de package.json van de repository gelezen, zodat ze niet kunnen afwijken van wat er werkelijk geïnstalleerd is.

03Uitgangspunten

De regels onder de lijst

  1. 01Eén animatiebibliotheek. Nooit een tweede ernaast.
  2. 02Kleuren heten naar hun rol, nooit naar een hexcode — zo komen er vijf paletten uit één set componenten.
  3. 03Elke animatie heeft een stille versie. Reduced motion is een volwaardige manier om deze site te lezen, geen uitgeklede.
  4. 04Elk bedieningselement draagt een zichtbaar woord. Niets hier is een icoon dat je moet ontcijferen.
  5. 05Beide talen zijn echte adressen, geen schakelaar in de browser — Nederlandse pagina's zijn vindbaar, deelbaar en indexeerbaar.
  6. 06Er wordt niets samengevoegd voordat de typecontrole, de linter en de productiebuild alle drie zwijgen.

Hetzelfde manifest wordt byte-identiek bijgehouden in de Equilibrium-repository, zodat beide sites tegen elkaar te controleren zijn. Convergentie is het plan; het versieverschil is het werk.

11/18 hiervan draaien ook op Equilibrium

04Evolutie

Hoe deze site gemaakt is, bewaard in plaats van onthouden.

Alles hierboven is waar dit van gemaakt is. Wat volgt is hoe het zover kwam — de vragen, de beslissingen en de dingen die teruggedraaid moesten worden.

  1. 2026 · 07 · 10 — 07 · 19

    Een site uit het niets

    Tien dagen van lege repository naar een live site op een eigen domein.

    De studio had een naam, een logo en geen website. De opdracht was een marketingsite die later echt werk kon dragen zonder ervoor herbouwd te hoeven worden.

    Architectuur · Gereconstrueerd

  2. 2026 · 07 · 20

    De studio krijgt een editor

    Klik-en-wijzig op de live site, achter één Google-account — in plaats van een CMS.

    Elk woord op de site stond in TypeScript. De eigenaar kon geen typefout herstellen zonder ontwikkelaar, en dat is een slechte plek voor een eenmansstudio.

    Architectuur · Geverifieerd

  3. 2026 · 07 · 21

    De telefoon is geen kleine desktop meer

    Vijftien pull requests op één dag, allemaal over de duim.

    De meeste bezoekers komen op een telefoon binnen. De site was een desktoplayout die kromp, met een balk die niemand met één hand kon bereiken.

    UX · Geverifieerd

  4. 2026 · 07 · 26 — 07 · 27

    Snel genoeg om te houden, vindbaar in het Nederlands

    De 3D-laag leerde wachten, en het Nederlands kreeg eigen URL's.

    Het terrein was mooi en duur: het werd bij elke paginalading gebouwd, of iemand er ooit naartoe scrolde of niet. En de Nederlandse site — de taal van vrijwel elke klant — bestond alleen als een schakelaar in de browser, dus zoekmachines zagen hem nooit.

    Prestatie · Geverifieerd

  5. 2026 · 07 · 30 — 07 · 31

    Kleur krijgt een machine die het narekent

    Tien paletten, en een script dat er geen enkele laat zakken.

    Paletten werden op het oog toegevoegd. Een palet dat op het scherm van de ontwerper goed leest, kan alsnog onder een contrastdrempel zakken, en niets op de site controleerde dat.

    Toegankelijkheid · Geverifieerd

  6. 2026 · 08 · 01

    De bouw wordt verkenbaar

    Een techniekpagina die je kunt openen, geen lijst met afhankelijkheden.

    De zustersite had een sectie die zijn technologie benoemde. De eigenaar vroeg om iets "interactiever en intuïtiever" — een lijst met pakketnamen zegt niets wat een package.json niet ook zegt.

    Technologie · Geverifieerd

  7. 2026 · 08 · 01

    Een poort met een echte browser

    Types, lint, contrast, build, en tests die de pagina echt openen.

    Twee fouten waren live gegaan op grond van "hij bouwt". Dat iets bouwt is geen bewijs dat het werkt.

    Architectuur · Geverifieerd

  8. 2026 · 08 · 02

    Geïnstalleerd, en aaneengesloten

    Het project dat je aanklikt wordt de pagina waarop je landt.

    Een projectkaart aanklikken wierp de bezoeker naar een nieuwe pagina, die daar opnieuw zijn plek moest zoeken. En de site, toegevoegd aan een beginscherm, was nog steeds een vermomde browsertab.

    UX · Geverifieerd

  9. 2026 · 08 · 03

    Werk dat zijn cijfers laat zien

    Resultaten, een voor-en-na-schuif, en de woorden van de klant zelf.

    De projecten waren foto's met bijschriften. Het argument van een ecologische tuin is wat er veranderde — water dat blijft, soorten die terugkomen — en daar stond niets van op de pagina.

    Ontwerp · Geverifieerd

  10. 2026 · 08 · 22 — 08 · 24

    Gevonden via zoeken, bestuurd vanaf een telefoon

    Echte gestructureerde data, en offertes en facturen achter één login.

    De Nederlandse pagina's droegen Engelse metadata, en de administratie van de studio zat in een spreadsheet.

    Architectuur · Geverifieerd

  11. 2026 · 08 · 25

    Prijzen in de etalage

    Een pagina en een vanaf-prijs per dienst, en een postcodecheck die ook nee zegt.

    Seizoenswerk is gestandaardiseerd en inplanbaar, dus de prijs verstoppen achter een offerteformulier kost de studio juist de klanten die al wilden boeken.

    Ontwerp · Geverifieerd

  12. 2026 · 08 · 25 — 08 · 27

    Eén boom, drie weergaven

    Elf pull requests om elk menu uit dezelfde bron te laten lezen.

    Er waren elf diensten bij gekomen en de menu's konden ze niet dragen. De balk, de telefoondock en de footer hadden elk hun eigen lijst, en die drie waren al uit elkaar gegroeid.

    UX · Geverifieerd

  13. 2026 · 08 · 27

    Deze tijdlijn

    Het verslag van hoe de site hier kwam, gekoppeld aan het verslag van waar hij van gemaakt is.

    De dagverslagen in docs/log/ bevatten de redenering achter vrijwel elke beslissing op deze site, en geen bezoeker kon ze ooit zien. De techniekpagina beantwoordt wát; niets beantwoordde hoe of waarom.

    Onderzoek · Loopt nu

Dezelfde geschiedenis, geteld

Gemeten 2026-08-27 · niet ingetypt

Pull requests gemerged

62

Verdeeld over 15 dagen waarop er iets gecommit is, tussen 2026-07-20 en 2026-08-27.

Regels geschreven

63.905

Elke toevoeging die deze repository ooit heeft vastgelegd, opgeteld over alle commits in plaats van als momentopname.

Regels er weer uit

21.316

Dat is 33% van alles wat er geschreven is. Het interessantste getal hier: wat deze site is, is hij vooral door weglaten.

Regels die er nu staan

22.283

15.843 interface, 5.588 logica en data, 852 opmaak.

Geschreven, en weer weg
21.316 verwijderd63.905 geschreven
Commits
65
Mijlpalen
13
Stappen
96
Teruggedraaid
12
Bronbestanden
164
Componenten
54
Routes
17
Diensten met prijs
11
Paletten
10
Contrastparen gecontroleerd
122
Browsertests
26
Afhankelijkheden
25

Naast 22.283 regels code staan 7.808 regels geschreven verslag — de dagverslagen, het operationeel handboek en dit archief. Bijna één regel proza op elke drie regels code, en dat is precies waarom deze tijdlijn er überhaupt kon komen.

05Conceptueel

2026-09-04

Een UI-teardown van gronn.studio tegen de componentcatalogus van 21st.dev

Niet gebouwd, en hardop gezegd

Dertien componenten, gekozen op één vraag: dicht dit een gat dat de site nú heeft? Nagelezen tegen de code voordat het hier kwam te staan — één van de drie hoofdbevindingen hield geen stand, en dat staat erbij.

Niets hiervan is een toezegging. Het is een voorstel met een datum en een bron, bewaard waar het gebouwde staat — want een lijst met voornemens die niemand kan zien is een lijst waar niemand op is aan te spreken.

Eerst — die geld opleveren

Voor en na, sleepbaar

Projectpagina's

Nu

Elk project heeft één sfeerfoto en een geschreven beschrijving van de fasen.

Gat

Nergens visueel bewijs van transformatie — precies het ding waarop iemand met een troebele vijver besluit te bellen.

Nagekeken

Deze klopt niet zoals hij er staat, en hem nakijken leverde meer op dan hem uitvoeren. De slider bestáát: `before-after.tsx`, sleepbaar, met toetsenbordbediening, en hij staat op de projectpagina's. Het echte gat is inhoud en geen component — één van de zes projecten heeft een voor/na-paar, de rest is nog plaatshouderfotografie. Geen enkel pakket had dat opgelost.

  • Compare Reveal@rmahammad

    De keuze. Sleepgreep, toetsenbordbediening, een intro-sweep die zichzelf uitlegt. Dubbelklik zet hem terug in het midden.

  • Foto's als een stapel kaarten. Sterk voor de acht bouwfasen van een project — één stapel in plaats van een lijst.

  • Verticaal scrollen stuurt een horizontaal spoor met nummer, titel en parallaxbeeld. Heeft een mobiele terugval.

Een aanvraag als gesprek, niet als knop

Start een project

Nu

Eén oproep die naar een formulier leidt. Alles of niets.

Gat

Geen kwalificatie: je hoort pas bij het intakegesprek of het om een balkonvijver of een halve hectare gaat.

Nagekeken

Inmiddels half gebouwd. Het korte formulier op /contact telt vier stappen en vraagt eerst wat voor project het is; de lange ontwerp-intake achter het dashboard ging van vierentwintig open vragen naar twee, met zevenenzestig dingen om aan te klikken. Wat wél blijft staan is het midden: niets kwalificeert een eerste bezoeker vóór hij tussen die twee kiest.

  • Multi-step Wizard@dhileepkumargm

    De keuze. Stappenindicator, validatie per stap. Vier stappen dekken het: soort ruimte, oppervlakte, water ja/nee, budgetrange en postcode.

  • Zet WhatsApp en mail visueel op gelijke hoogte met het formulier — precies hoe de studio zelf bereikt wil worden.

Een galerij die je kunt openen

Geselecteerde projecten

Nu

Zes projectkaarten met locatie, status en één zin. Netjes, maar de foto's blijven klein.

Gat

Beplantingsdetail, waterlijn, biofilter — dingen die je van dichtbij moet zien, en dat kan nergens.

  • De keuze. Masonry die de echte beeldverhouding behoudt. Beplantingsfoto's zijn zelden 16:9, en dit is de enige keuze die dat respecteert.

  • Focus Cards@manuarora700

    Hover vervaagt de andere kaarten. Een rustig effect dat het raster als portfolio laat lezen in plaats van als lijst.

Dan — vertrouwen en vindbaarheid

De FAQ die er nog niet is

Nieuw — onder Diensten

Nu

Negen secties, geen FAQ. Alle kennis zit in lopende tekst.

Gat

"Waarom is mijn vijver troebel", "wat kost een natuurvijver", "moet er een pomp in" — dat zijn de zoekopdrachten, en vraag-en-antwoord is het formaat dat daarop rankt.

Nagekeken

Nagekeken en waar: nergens een FAQ in de code. Van alles op deze pagina is dit de enige die puur iets toevoegt — hij breekt niets en concurreert met niets.

  • De keuze. Accordeon op shadcn-primitieven, met categoriebadges die samenvallen met de diensten. Een Radix-accordeon betekent ook dat de semantiek klopt.

De methode als beweging

Aanpak — de zes stappen

Nu

Zes genummerde stappen als statische kolommen.

Gat

De inhoud ís een volgorde, dus de nummering verdient het. Een tijdlijn die meebeweegt maakt van een opsomming een proces.

  • De keuze. Markeert de actieve stap op scrollpositie. Zes stappen zonder aanpassing, en het accent kan het merkgroen zijn.

Het werkgebied, letterlijk

Nieuw — voettekst of contact

Nu

Projecten staan in Utrecht, Arnhem, Nijmegen, Zeist, Amersfoort en op de Veluwe. Nergens staat waar de studio zelf zit of hoe ver hij rijdt.

Gat

Een lokale dienst zonder plaatsbepaling. Iemand vlakbij weet niet dat je om de hoek zit; iemand ver weg boekt een intake die niet doorgaat.

Nagekeken

Waar, en scherper dan de teardown wist: die zes plaatsen zijn plaatshouderfictie in afwachting van echte projecten, terwijl de studio in Limburg staat ingeschreven. Een kaart zou vandaag dus uit verzonnen locaties getekend worden — wat het argument is om eerst echte foto's en echte projecten te hebben, en de kaart daarna.

  • Location Map@Mazyar kawa

    De keuze. Geanimeerde kaart met pulserende markers. Thuisbasis plus de projecten als punten vertelt bereik en portfolio in één beeld.

Als er tijd over is

Afwerking

Diensten · referenties · voettekst

Nu

Het werkt allemaal.

Gat

Geen van deze dicht een gat — en dat is precies waarom ze als laatste komen.

  • Editorial Testimonial@jatin-yadav05

    Typografisch, groot, één quote tegelijk. Beter voor een studio met weinig maar goede referenties dan een carrousel die de leegte verbergt.

  • Count Up@unlumen

    Telt op zodra het in beeld komt. Alleen met echte getallen — m² omgevormd, liters regenwater geborgen. Verzonnen cijfers zijn hier erger dan geen cijfers.

  • Gelaagde blur via gradiëntmaskers, zodat foto's oplossen in de ondergrond in plaats van er als rechthoek op te liggen.

Wat niet te nemen

Liquid glass, neonknoppen, shaders, chatwidgets. Ze scoren hoog in de catalogus en staan haaks op "natuur is infrastructuur". Deze site is geloofwaardig omdát hij terughoudend is.

Let op het gewicht

Er staat al veel beweging op de pagina. Elke keuze hierboven voegt meer toe. Hooguit één die opvalt, per pagina.

Beperkte beweging

Community-componenten respecteren dat lang niet altijd, en scrollgestuurde tijdlijnen en sweeps zijn precies waar mensen last van hebben. Dat komt erbij tijdens het hertokenen, niet erna.

Volgorde

Eén tegelijk, en meten voor de volgende. Niets op deze lijst is het waard om er twee tegelijk in te zetten.