AI-First
A structured page model models can write and revise reliably: clear REGISTRY, COMPONENTS, and DATA boundaries instead of opaque templates.
Web Definition Language
RuledWDL is a host-agnostic core engine that renders declarative JSON into optimized HTML. Same primitives you already know: structure, style, and behavior — separated for composition, reuse, and generation.
Author once as WDL JSON. Render anywhere the engine runs — Node, Workers, edge, or the browser — without a bundler step for the page model itself.
A structured page model models can write and revise reliably: clear REGISTRY, COMPONENTS, and DATA boundaries instead of opaque templates.
Compose to HTML at the edge or in-process. Predictable output, no client-only framework tax required for the document.
Define pages, layouts, and components as data — no compile step, no static-site generation pipeline, no framework build just to ship HTML artifacts and website pages.
Generation-friendly surface: deterministic structure, data binding, and reusable components that tools can emit and humans can read.
WDL does not invent a parallel component vocabulary on top of the web. It wraps the web you already use.
Elements, classes, and attributes map to normal HTML. Styles are ordinary CSS utilities or tokens — not a closed design DSL.
The same mental model as HTML, CSS, and JavaScript wiring — expressed inside WDL JSON with ${} binding and loops.
Structure (COMPONENTS), style (REGISTRY), and content (DATA) stay separable so composition and reuse stay explicit.
A page is REGISTRY + COMPONENTS + DATA. Layouts chain with {{content}}. The engine turns that into HTML using a pluggable store.
Minimal page shape
{
"REGISTRY": { "title": { "class": "text-3xl font-semibold" } },
"COMPONENTS": [
{ "layers": "h1.title", "attr": { ".title": { "text": "Hello ${name}" } } }
],
"DATA": { "name": "World" }
}Edit WDL JSON and see HTML render live. On large screens JSON and preview sit side by side; on mobile start in JSON, then switch tabs. Device frames stay true size — pan and zoom when the viewport is smaller.