CMS[this] · Klantproduct

Een CMS voor sites die AI heeft gebouwd

Een zip erin en een bewerkbare site eruit, met het ontwerp onaangeraakt. Vier werkdagen als design partner.

  • Gereedschap voor makers
  • AI
  • Interface ontwerp
De homepage van CMS[this] met de kop “We eat your HTML zip” op een donkere achtergrond, en ernaast een schema van een pagina waarin de bewerkbare velden oranje omkaderd staan en de gedeelde kop- en voetregel in turkoois.
Opdrachtgever
cmsthis
Website
cmsthis.com
Platform
Web
Jaar
2026

CMS[this] bouwt een contentsysteem om een site die je al hebt. Je geeft het een zip, een URL of de map die Claude of Codex uitspuugde. Je krijgt hetzelfde ontwerp terug, met elke tekst en elk beeld bewerkbaar. Het is voor wie met AI een site bouwde, voor freelancers met één klant en voor bureaus met tientallen klantsites. Wij waren vier werkdagen design partner. We zetten drie visuele richtingen naast elkaar en herschreven het syncmodel tot eigendom per veld. Bijna alle taal uit dat traject staat nu letterlijk in het product.

Gebouwd met
  • Claude Design
  • Design tokens
  • Widget-prototypes
  • Tweetrapsprompts
  • grep

In het kort

werkdagen
4
prompts
27+
visuele richtingen
3
hardgecodeerde hexwaarden
1.369
Hasselblad-schermen geteld
19

Wat er lag

Je liet Claude of Codex een site bouwen, en hij is mooi geworden. Dan moet er één woord op de homepage anders, en je zit vast in een map met code. Daar is CMS[this] voor. Toen wij erbij kwamen, lag er een prototype rond versie twaalf. In het merkdocument stond één zin waar alles op terugsloeg: de tool raakt het ontwerp van de klant niet aan. Bijna elke beslissing kwam daardoor neer op één vraag. Bepaalt de gebruiker hier wát er staat, of begint hij aan hóe het eruitziet?

Drie details die het verschil maken

Het product in vijf schermen

  • De sectie Zip in. CMS out. op cmsthis.com met drie stappen: je zip erin, alles wordt bewerkbaar, en publiceren naar je eigen hosting.
    “Zip in. CMS out.” in drie stappen: je zip erin, alles wordt bewerkbaar en je publiceert naar je eigen hosting. Eronder zit het model dat bepaalt wie waarvan eigenaar is.
  • Twee secties op cmsthis.com naast elkaar: Keep clients happy without babysitting them, met de zin The design is sacred; we only edit content, en Got a site from Claude? Make it yours.
    Voor ontwerpers en voor wie een site van Claude heeft. De zin uit het merkdocument staat er woordelijk.
  • De sectie Small factory. Full assembly line: zes kaarten met on-page visual editing, shared header and footer, forms naar een inbox, SEO server-side, publish to any host en live previews.
    Zes dingen die het systeem doet zonder het ontwerp aan te raken, onder de kop “Small factory. Full assembly line.”
  • De prijzen van CMS[this]: Free, Pro als meest gekozen, Business en Studio, elk met opslag, verkeer en het aantal sites.
    Free, Pro, Business en Studio. Publiceren mag op elk plan, en de upgrade gaat over “maak het van jou”.
  • De oranje afsluiting Feed us your site met de knop Create your account, en de voet van cmsthis.com.
    De afsluiting “Feed us your site”, met het oranje accent als vlak.

Van één zin naar eigendom per veld

Zeven klantwensen, en vijf keer nee

Open je nu een site in CMS[this], dan bewerk je wat er staat: teksten en beelden. Een pagina toevoegen of het menu herordenen kan niet. Dat besluit viel halverwege ons traject. Een tabel uit de eigen bureaupraktijk gaf zeven veelgestelde klantwensen een ja of een nee. Nieuwe pagina's, herordenen, verbergen, dupliceren en menubeheer kregen allemaal nee.

Dat ene nee schrapte meer dan een functie. Het syncmodel had inmiddels drie lagen: ontwerp, structuur en inhoud. De middelste bestond alleen omdat de klant structuur mocht wijzigen. Met twee lagen verdween het moeilijkste deel van het product: de botsingsvraag per pagina, de merktekens voor wat jij had verplaatst en het hele scherm voor structuuroverschrijvingen. Ontwerp en structuur komen nu uit de bron, en inhoud leeft in het systeem.

Waar de editor nee zegt, zie je waar die mogelijkheid wél leeft. Eronder staat een ingevulde prompt voor Claude of Codex om te kopiëren, en de weg terug via een nieuwe synchronisatie. Dat patroon hergebruikten we het vaakst: zes grenzen, één component. Alleen publicaties inplannen kreeg het niet, want die functie bestaat in de bron nog niet. Met hetzelfde component erbij zou de gebruiker leren dat de bron iets kan wat hij niet kan.

The design is sacred; we only edit content.

Twee mensen, één tekst: wie wint?

De bouwer schrijft een tekst in Claude. Een redacteur past hem aan in CMS[this]. Dan wijzigt de bouwer dezelfde tekst opnieuw in zijn bron en synchroniseert. Wie wint?

Wint de bron altijd, dan kan één synchronisatie een middag redactiewerk stilletjes wissen, en dan is de belofte van het product stuk. Wint het systeem altijd, dan kan de bouwer zijn eigen typefout nooit meer verbeteren: hij past aan, synchroniseert en er gebeurt niets. Dus wint geen van beide. Een veld dat niemand aanraakte, volgt de bron. Bewerkt iemand een veld in CMS[this], dan is het van het systeem tot iemand het expliciet terugzet.

Daaruit volgden regels die niet vanzelf spraken. Bij een collectie komt het schema uit de bron, welke velden er zijn en dat het een lijst is, en zijn de items inhoud. Bedrijfsgegevens verhuizen in hun geheel. Zo kan het nooit gebeuren dat het telefoonnummer op de contactpagina van de klant is en in de voettekst nog van de bron. En het scherm voor overschrijvingen dat we net hadden begraven, kwam terug in het klein: alleen inhoud, met per regel een knop terug naar de bron.

1.369 kleurcodes, geteld voordat we over kleur spraken

Drie visuele richtingen vergelijk je niet eerlijk zonder één bron per waarde in de code. Dus telden we eerst. De bestaande build had 1.369 hardgecodeerde hexwaarden, kleurcodes die letterlijk in de code staan. Daarvan waren er 137 verschillend, en één kleur kwam 189 keer voor. Daarnaast stonden er 175 losse rgba-waarden die nooit met een thema meebewogen, en dertig z-indexgetallen zonder ladder.

Vanaf dat punt telden we met grep, een zoekopdracht door de hele code. Die telling bepaalde of een wijziging één prompt kon zijn of in fases moest. Elke visuele wijziging werd een tweetrapsprompt. Eerst ging de tokenlaag erin zonder één pixel te veranderen: “het scherm moet er na afloop pixel-identiek uitzien; als er iets zichtbaar verandert, is er een fout gemaakt”. Pas daarna wisselden de waarden.

Een latere ronde bracht ook schaduwen, transities, z-index en witruimte onder tokens. Dat ging in negen losse stappen, die je één voor één draait. Gaat er iets stuk in een run van zes wijzigingen, dan weet je niet welke het deed.

Negentien schermen van een Hasselblad

Naast de bestaande richting zetten we er twee: een warme, lichte en een die eruitziet als gereedschap. Die laatste was in de eerste build, in de woorden van de opdrachtgever, “gewoon een dark mode versie” van wat er al stond. De correctie werd de grootste visuele iteratie van het project, en hij kwam uit een telling.

We analyseerden negentien schermen van een Hasselblad-camera op kleur. Over de hele reeks zijn er maar twee dominante kleuren, samen zestig tot tachtig procent van elk beeld. Bij geen enkel scherm staat een grijstint in de top vijf. Een apparaat maakt bijzaken kleiner, het web maakt ze grijzer. Een camera kent geen grijsladder: tekst is wit, of hij is er niet.

Daaruit volgden omkeringen die met elkaar moesten kloppen. Hoeken gingen naar nul, behalve bij avatars. Letters komen nooit boven twaalf pixels, behalve één groot getal per scherm. En het accent werd een kleur voor een toestand in plaats van een actie: nooit meer een gevuld vlak groter dan een markering.

Voor de lichte richting bekeken we het product waar iedereen naar wees als “modern en donker”. Zijn themakleur bleek #fcfbf8, bijna wit, en de moderne indruk kwam van het kleurveld en de beweging. Na vier revisies is in die richting het meubilair grijs, en het enige verzadigde in beeld is het model. Het verloop werd letterlijk een noorderlicht, van groen via blauw naar magenta. Het betekent één ding: hier werkt de machine.

Wat we eruit hebben geleerd

  1. 01

    Bijna elke fout in dit project was dezelfde fout in een ander jasje: twee plekken die iets anders zeggen over dezelfde toestand. Een chip met het abonnement naast een plantekst die hem tegensprak. “Sync” als werkwoord op een knop, terwijl sync een verbinding is. Twee chips in de onderbalk die allebei zeiden of er een bron gekoppeld was. Eén bron per gegeven bedenk je niet vooraf. Het is de regel die overblijft nadat je dezelfde bug drie keer hebt opgelost.

  2. 02

    Een mooie schets is nog geen ontwerp. Het geschiedenispaneel begon als een ruggengraat in het midden, met de bron links en de inhoud rechts: een vertakkingsgrafiek voor mensen die nooit van versiebeheer hoorden. Over de volle breedte werkte dat. In een paneel van vierhonderd pixels viel het uit elkaar, want “Tom Bakker synced the source” moest in een kolom van honderddertig. Filterde je op één kant, dan viel de halve tijdlijn leeg, precies wanneer een logboek moet blijven werken. Het werd één kolom met een goot van dertig pixels ernaast: een open cirkel voor de bron, een gevulde stip voor wat hier gemaakt is.

  3. 03

    Dat onderscheid zit in het werkwoord. “Made here” bleek te vaag, “built in Claude” tegenover “edited here” werkte wel. Bouwen doe je met pagina's en indeling, bewerken met woorden en beelden. Bij het opschrijven bleek “edited here” al te bestaan als merkteken op losse velden. Hetzelfde begrip had twee namen gekregen, en niemand had het gemerkt.

  4. 04

    Een grens die alleen weigert, is een muur. Met een ingevulde prompt erbij wordt dezelfde grens een deur. Dat geldt ook voor het slot op een duurder abonnement. Publiceren mag op elk plan, naar een subdomein met een merkteken, want de upgrade gaat over “maak het van jou”. En nooit een slotje bij iets wat in je eigen bron leeft.

  5. 05

    Herhaling is de leercurve. Een verplichte rondleiding bij het eerste gebruik wordt weggeklikt, en de kennis verdwijnt ermee. Dus is er één visuele taal voor “dit komt uit je bron”, overal hetzelfde: op het canvas, in de paginalijst, in het menu en in de geschiedenis. Wie hem één keer leert, leest hem overal.

Letters en kleuren

Letters
Koppen
Space GroteskRegular (400) en groot: de koppen dragen op maat, niet op gewicht.
Lopende tekst
GeistDe variabele Geist voor alle tekst en de interface.
Kleuren
  • Zand
    #efebe4
    de achtergrond van de site: warm, geen wit
  • Zwart
    #000000
    tekst
  • Oranje
    #f2600c
    het accent: de knoppen, wat de klant bewerkt, de afsluiting
  • Wit
    #ffffff
    kaarten
  • Oranje is wat jij bewerkt, turkoois wat op elke pagina gedeeld is. Die twee kleuren dragen het model, op de site en in de editor.
  • Warm zand in plaats van wit, en één accent. Zo blijft de aandacht bij het schema en het product.
  • Gemeten in de CSS van cmsthis.com, 7 september 2026. De editor achter de inlog is niet gemeten.

Onder de motorkap

  • Meten
    • grep
    • 1.369 hexwaarden
    • 137 uniek
    • 175 rgba
    • 30 z-index

    Eerst tellen, dan pas over kleur praten. Zonder één bron per waarde zijn drie richtingen niet eerlijk te vergelijken.

  • Tokens
    • Tokenlaag
    • Negen passes
    • Pixel-identiek als toets

    Eerst de laag invoeren zonder één pixel te veranderen, en pas daarna de waarden wisselen.

  • Ontwerpen
    • Claude Design
    • Widget-prototypes
    • Drie richtingen

    Elke richting als werkend prototype in de echte codebase.

  • Prompts
    • Tweetrapsprompts
    • Eén pass per run

    Gaat er iets stuk in een run van zes wijzigingen, dan weet je niet welke het deed.

  • Model
    • Syncmodel van twee lagen
    • Eigendom per veld

    Een veld dat niemand aanraakte, volgt de bron. Bewerkt iemand een veld in CMS[this], dan is het van het systeem tot iemand het terugzet.

Voor wie verder wil lezen

Wat ervan live staat

Na de oplevering gingen we terug naar het echte product, want een ontwerptraject dat zichzelf niet nameet is een moodboard.

Na de oplevering gingen we terug naar het echte product, want een ontwerptraject dat zichzelf niet nameet is een moodboard. Bijna alle taal uit het traject staat er letterlijk: de kernzin, de microcopy en de namen van de schermen. Het zwevende dock met drie bestemmingen is de echte navigatie geworden, uit dode CSS die we activeerden. De schakelaar tussen bewerken en inhoud is weg, en linksonder staat één rustige hint.

De taal van open en gevuld loopt door tot elk element op het canvas. Wat uit de bron komt, krijgt een gestippelde rand, en wat je mag aanraken een doorgetrokken rand. Het scherm met overschrijvingen heet woordelijk “Fields you own”, met eronder dat deze velden niet veranderen als je bijwerkt. Uit die zin kwam het eigendomsmodel voort.

Twee dingen zijn eenvoudiger dan we ze ontwierpen. Het geschiedenispaneel is in productie een platte lijst met back-ups en een herstelknop, zonder de herkomstgoot en de botsingsregel. En de bron-as die wij tot twee eigenschappen hadden teruggebracht, is er nog niet: voorlopig is er alleen de zip-route. De naam en de plek kwamen aan, de rijkere vorm nog niet.

Er kwam ook iets bij wat wij niet hadden bedacht. Klik met rechts op een kop, en je kunt het bewerken van dat ene veld uitzetten: “turn off editing to keep the content exactly as it is now”. Het systeem onthoudt dus wat je aanraakte, en je kunt een veld ook zelf vergrendelen. Die afslag bedacht het team er zelf bij, en het is de mooiste bevestiging van het eigendom per veld.

De testsite Blue Harbor zoals hij gepubliceerd wordt: een bakkerij aan het water met de kop “Fresh bread, slow coffee, and a view of the water” en een knop “Reserve a table”.
Een testsite zoals CMS[this] hem publiceert: het ontwerp van de bron, elke tekst en elk beeld bewerkbaar.

Wat doet CMS[this]?

CMS[this] bouwt een contentsysteem om een site die je al hebt: een zip, een URL of de map die Claude of Codex uitspuugde. Elke tekst en elk beeld wordt bewerkbaar, en het ontwerp blijft onaangeraakt.

Wat was de rol van Ideelab bij CMS[this]?

Ideelab was vier werkdagen design partner. Wij zetten drie visuele richtingen naast elkaar, herschreven het syncmodel tot eigendom per veld en schreven de microcopy die nu woordelijk in het product staat.

Wie wint in CMS[this] als bron en redactie botsen?

Geen van beide. Een veld dat niemand aanraakte, volgt de bron. Een veld dat in CMS[this] is bewerkt, blijft van het systeem tot iemand het expliciet terugzet.

Waarom mag de editor van CMS[this] geen structuur wijzigen?

Zeven veelgestelde klantwensen kregen een ja of een nee. Nieuwe pagina's, herordenen, verbergen, dupliceren en menubeheer kregen nee, want structuur leeft in de bron. Daardoor kon het syncmodel terug naar twee lagen. Bij elke grens staat een ingevulde prompt voor Claude of Codex.

Wat staat er van het ontwerp live in CMS[this]?

De kernzin, de microcopy, de namen van de schermen, het dock, de taal van open en gevuld en het scherm Fields you own. Het geschiedenispaneel is eenvoudiger dan ontworpen: een lijst met back-ups en een herstelknop.

Wat we hier deden

Lees ook

De oprichter van een filmstudio voor de ledwand met een zonsondergang, een laptop onder zijn arm.

Wil je even gratis sparren over jouw digitale idee?

Waar loop jij tegenaan in je bedrijf? Wat kan beter? Wat kan sneller? En wat doet iemand nog elke week met de hand?

  • Een halfuur sparren over jouw idee, gratis
  • Ontdek welke route het beste werkt voor jouw bedrijf
  • Krijg een ruwe inschatting van de prijs en het aantal weken
Wat is jouw idee?

„Een browsertool zoals Figma, maar dan om samen muziek te maken.”

Muzieklabel, Hilversum

Alexander Kaan, zwart-witfoto.

Vertel me je probleem, je geniale idee of stel gewoon wat vragen!

Alexander Kaan, product designer

Of plan direct een halfuur (opent in een nieuw venster)Of stuur een WhatsApp (opent WhatsApp)

Mogen we met cookies meten hoe je deze site gebruikt? Meer over cookies