Auditable by design
Every screen is a versioned, diffable contract. "Prove this behaves correctly" becomes a code review — not "trust me." No interpreter hiding in your data.
Blueprint turns a screen into an open JSON contract — no logic, no eval, no lock-in. Describe the UI, validate it in CI, compile it to real components, and ship it on your own infrastructure.
Open-source runtime · self-hosted · CSP-clean · no data egress
{ "version": "1.0", "root": { "type": "form", "id": "kyc", "fields": [ { "type": "input", "label": "Legal name" }, { "type": "select", "label": "Country", "visibleWhen": { "field": "kind", "eq": "business" } }, { "type": "button", "label": "Verify identity" } ] } }
Every low-code builder starts as simple config. Then it grows conditions, then bindings, then expressions — until your UI is running an interpreter over untyped JSON, with no debugger and no tests.
eval, rejected by strict CSP and broken on deploy.{
"button": {
"onClick": "eval(fetchUser(row.id) &&
ctx.state.open = true)",
"visible": "{{ user.role == 'admin' }}"
}
}The JSON has zero logic and zero eval. Real logic stays in typed, testable React. What you ship is a screen you can read, diff, and prove.
Every screen is a versioned, diffable contract. "Prove this behaves correctly" becomes a code review — not "trust me." No interpreter hiding in your data.
The contract is open JSON you keep. The runtime is open source and self-hosted. Leave anytime — the artifact is yours and runs without us.
Anything the catalog doesn't cover, you drop in as real, typed React. The escape hatch means the abstraction never corners you.
Build the screen from a fixed set of atoms. The output is portable JSON — no code generation, no proprietary format.
Invalid UI fails the build, not production. The contract is validated against a schema; logic lives in typed React, never in the JSON.
A thin runtime renders the contract with your design system — Tailwind or MUI. No eval, CSP-clean.
Deploy self-hosted. No data leaves your perimeter. The same contract renders anywhere it's mounted.
Teams that adopted config-driven builders documented the same failure modes across every vendor. Each one maps, one-to-one, onto a Blueprint design decision.
Config grows rules, then a DSL — until you're hand-coding everything, just in a worse language.
On a payment page, a script that can change without your deploy must be inventoried and tamper-monitored.
The recurring verdict on visual builders: they make hard things easy and easy things impossible.
No eval, no runtime-injected scripts. A compiled, inventoried screen your scanner can verify — not one that mutates behind your back.
Self-hosted end to end. The contract compiles and renders inside your perimeter — no proxy, no egress, no BAA on the UI layer.
Every screen is versioned JSON. Approvals, reviews, and audit trails are just Git — evidence you already produce.
Get early access to the Builder and the runtime. Be first when Blueprint ships — and help shape it.