Teken een app, krijg echte componenten
Een canvas dat je schets invult met de echte onderdelen van acht design systems, en er werkende code van maakt.

- Product
- Onderwerp
- Platform
- Jaar
Je tekent een scherm met de muis, rechtsklikt op een vak en kiest wat het moet worden. UIDraw vult het met het echte component uit de kit die je koos, met de echte classes en de echte stylesheet. Wat je exporteert is werkende code in die stack.
- Vanilla ES-modules
- SVG en iframes
- Motor uit UIcockpit
- Echte kit-CSS
- node:test
- Headless Chrome-checks
In het kort
- 8
- 32
- 3
- 183
- 36
Wat er lag
Een schets op papier is snel, maar daarna begint iemand alles opnieuw in code. Een prototype in een ontwerptool lijkt op een product, maar de onderdelen bestaan nergens echt. De vraag: kan een tekening meteen uit de onderdelen van een bestaand design system bestaan? Zodat wisselen van kit alleen de aankleding verandert, en de export gewoon draait.
Drie details die het verschil maken



Hoe het is gemaakt
Van krabbel naar component
Je tekent zoals op een whiteboard. Een gesloten haal wordt een rechthoek, een zigzag of golf wordt tekst, een rondje een avatar. Vier losse lijnen of twee L's die samen een vak vormen, leest UIDraw ook als één rechthoek. Hoe het vak heet, raadt hij uit plek en maat: smal en hoog aan de zijkant is een zijmenu, breed en laag bovenin een navigatiebalk, onderin een footer, klein en breed een knop, en de rest een paneel. Dat voorstel staat als label met een vraagteken op de vorm.
Met een rechtsklik kies je het echte onderdeel, of je neemt het voorstel over. Ligt een vak voor het grootste deel in een ander vak, dan wordt het daar een kind van, zoals een knop in een paneel. Dat staat nergens opgeslagen: UIDraw leidt het elke keer opnieuw af uit de tekening, dus als je een vak verschuift, verhuist het kind vanzelf mee of los. Tekst wordt ingevuld uit een paar zinnen over het tekenen zelf, zodat er nergens nep-Latijn als opvulling staat.

Acht kits, één tekening
Er zijn acht kits: shadcn/ui, Tailwind, daisyUI, Bootstrap, Radix Themes, Mantine, Material Web en Ant Design. Wissel je van kit, dan blijft je tekening staan en kleedt UIDraw hetzelfde scherm opnieuw aan, met de iconen die bij die kit horen: Heroicons bij Tailwind, Material Symbols bij Material, lucide bij shadcn.
Elk onderdeel draait in een eigen iframe met de echte stylesheet van de kit erin. Ant Design gaat nog een stap verder: dat is React, dus draait in het frame hun eigen React. Wie wil zien wat een kit echt anders doet, tekent één keer en klikt door de lijst.

Niets verzinnen
De motor komt uit UIcockpit, ons open-source gereedschap dat negen design systems naast elkaar zet (zie de case op /projecten/ui-cockpit/). UIDraw draagt daar een vaste kopie van: de lijst met onderdelen, de vertaling per kit naar echte markup, en het bouwen van de echte stylesheet. Alleen de tekenlaag is nieuw.
De regel is dat er niets verzonnen wordt. Elke class, elk icoon en elk component komt uit het gepubliceerde pakket van de kit, en waar een kit iets niet heeft, zegt UIDraw dat hardop in plaats van het na te bouwen. Material Web heeft bijvoorbeeld geen navigatiebalk, geen tabel en geen footer, en shadcn/ui geen grafiek, want die zit daar in React en niet in een class.
Drie poorten bewaken dat bij elke build. De eerste kijkt of elke class echt in de stylesheet van de kit staat, en breekt de build af als er één is bedacht. De tweede opent de app in een echte headless Chrome en kijkt of elke class op de plek waar hij staat ook iets raakt. De derde pakt de export uit, bouwt hem met het eigen gereedschap van de kit (de Tailwind-CLI, Sass of esbuild) en kijkt of er daarna nog steeds niets verzonnen is.

Pagina's, en wat eruit komt
Een app is meer dan één scherm, dus werk je in pagina's met tabs erboven. Het overzicht (toets G) zet ze als potloodschetsjes naast elkaar, en de volgorde waarin je ze sleept is de volgorde in de export. Vier voorbeelden staan klaar: App shell, Login, Site page en Settings. Je tekening blijft in je browser staan, je bewaart hem als bestand, of je deelt hem als link waarin de hele tekening ingepakt zit. Er is geen account en geen server.
Export geeft een zip met werkende code in de kit die je koos: de eerste pagina als index.html, de rest ernaast, het bestand om hem te bouwen, en een handvol papieren met de ontwerpkeuzes, de tokens en uitleg voor wie er met een AI-assistent verder aan werkt. Vakken die je nooit vulde gaan niet mee; die staan alleen als telling in een regel commentaar. Bij Ant Design komen er nog geen pagina's uit, en dat staat in de README van de zip.

Wat we eruit hebben geleerd
- 01
Een klik bedoelt bijna altijd de kleinste vorm eronder, niet de bovenste. Bij de eerste echte schets ging een vulling naar het buitenste vak terwijl het binnenste bedoeld was. Sindsdien leidt UIDraw steeds uit de tekening zelf af wat waarin ligt, en wie een beetje over de lijntjes kleurt, zit er toch in.
- 02
Gaaf is geen reden. Om tussen pagina's te wisselen bouwden we een waaier van kaartjes die als een halve maan onderin opkwam. Tien minuten later ging hij er weer uit: het overzicht deed hetzelfde werk, alleen handiger.
- 03
Streng mag, blind niet. De poort die kijkt of elke class iets doet, sloeg bij shadcn/ui aan op classes die pas iets doen in een bepaalde stand, zoals een uitgeschakelde knop. Die staan nu per patroon vrijgesteld, met de reden erbij, en elke run zegt hoeveel classes daaronder vallen.
Letters en kleuren
- Interface
- Systeemletter
- Labels en sneltoetsen
- Systeem-monospace
- #1A1A1Ctekst
- #26262Ade schetslijn, het actieve gereedschap en een gevuld label
- #75757Cuitleg en tweede tekst
- #E3E3E6randen en scheidingen
- #FBFBFAhet canvas, met een stippenraster om de 22 pixels
- #F0F0EEde ondergrond rond het venster
- #4F46E5selectie en het label suggested
- #B42318verwijderen
- Bewust kaal: de kits zijn de kleur op dit scherm. UIDraw zelf is grijs, met indigo voor wat je geselecteerd hebt en rood voor weggooien.
- Het woordmerk en het beeldmerk staan als svg in de repo en nemen de kleur van de tekst over.
- Uitgelezen uit de code op 30 september 2026.
Waar het van gemaakt is
- Tekenen
- SVG
- Pure geometrie
- 64 punten per haal
- Vullen
- Iframes
- Echte kit-CSS
- postMessage
- Motor
- Uit UIcockpit
- Vertaling per kit
- OKLCH-kleuren
- Iconen per kit
- Poorten
- Fidelity
- Headless Chrome
- Export bouwen
- Export
- Zip
- Tailwind-CLI
- Sass
- esbuild
- Bewaren en delen
- localStorage
- .uidraw-bestand
- Link met de tekening erin
Voor wie verder wil lezen
Onder de motorkap
Een haal wordt eerst herschaald naar 64 punten en een beetje gladgestreken.
Een haal wordt eerst herschaald naar 64 punten en een beetje gladgestreken. Is hij breed en draait hij vaak van richting, dan is het een krabbel, en een krabbel is tekst. Is hij gesloten, dan meet UIDraw twee afwijkingen: hoe ver de punten van een ellips liggen, en hoe ver van de rand van hun eigen kader. De vorm die het best past wint, en een haal die geen van beide is, blijft inkt: UIDraw zegt dan liever niets dan iets verkeerds.
Wat waarin ligt, rekent UIDraw bij elke wijziging opnieuw uit. Een vorm is het kind van de kleinste grotere vorm die minstens 80 procent ervan bedekt, en kinderen staan in leesvolgorde: van boven naar beneden, en dan van links naar rechts. Een klik gaat naar de kleinste vorm onder de muis, met een paar pixels speling.
Ongedaan maken onthoudt 120 stappen, en telt slim: een reeks pijltjes kort achter elkaar is één stap, net als één haal met de gum. Een gedeelde link bevat de hele tekening, ingepakt met de compressie die de browser zelf heeft, en bij het openen controleert UIDraw wat erin zit, zodat een link geen code kan binnensmokkelen.
Waar het nu staat
Af: tekenen, herkennen en vullen in acht kits, pagina's met een overzicht, bewaren en delen, en de export als werkende code voor zeven van de acht kits.
Af: tekenen, herkennen en vullen in acht kits, pagina's met een overzicht, bewaren en delen, en de export als werkende code voor zeven van de acht kits. De drie poorten en 183 tests draaien groen.
Nog niet af: Ant Design levert nog geen pagina's in de export. Claude Code, Figma Make en Google Stitch staan in het menu als roadmap, omdat die tools geen manier hebben om iets binnen te halen; ze komen als uitgeschreven opdracht. Meer vormen tegelijk groter maken kan nog niet, en de inklapbare zijbalk van shadcn/ui komt niet mee. De pagina is ruim 4 MB, omdat alle kits er tegelijk in zitten. UIDraw staat nog niet online.
Kan ik UIDraw al gebruiken?
Nog niet. UIDraw staat nog niet online; tot die tijd draait het bij ons.
Welke design systems zitten erin?
Acht: shadcn/ui, Tailwind, daisyUI, Bootstrap, Radix Themes, Mantine, Material Web en Ant Design.
Wat krijg je bij de export?
Een zip met werkende code in de kit die je koos: de pagina's, het bestand om hem te bouwen, en papieren met de ontwerpkeuzes en de tokens. Bij Ant Design komen er nog geen pagina's uit.
Wat als een kit een onderdeel niet heeft?
Dan zegt UIDraw dat hardop: in het menu staat gap bij het onderdeel, en het wordt niet nagebouwd.
Heb je een account of een server nodig?
Nee. Je tekening blijft in je browser staan, je bewaart hem als bestand, of je deelt hem als link.

