Your backend fills the contract — in any language.
The Blueprint SDK opens a contract, binds in your data, and validates it — server-side, with zeroeval. It runs where your data already lives, in Node, Go, or Java.
Node · Go · Java · zero eval · runs on your infra · no data egress
const ui = load(contract) await ui.resolveAll(async (src) => src === '$data.countries' ? db.countries() : []) const envelope = ui.toContract() // validated
Server-driven UI is only as safe as what fills it.
The usual ways to compose a screen on the backend all leak something — safety, ownership, or your sanity.
Templating on the server
Interpolating data into markup is an injection surface with no schema behind it.
A rendering service
Your data leaves your infrastructure for a vendor to compose the screen.
Bespoke glue per endpoint
Every screen re-implements load, validate and shape — slightly differently each time.
Open the contract. Bind your data. Validate. Return.
A small, typed SDK that turns a portable contract into a concrete one — filled with your data, checked, ready for the client.
Binds your data
Resolve `$data` bindings from your DB straight into the contract.
Validates the shape
Checked against the frozen contract schema — you can’t ship a broken screen.
Zero eval
It manipulates JSON and never evaluates it. PCI- and CSP-safe by construction.
One contract. Node, Go, or Java.
The SDK is the same shape in every language — load, resolve, validate, return. Swap the backend; the contract and the client never change.
import { load } from '@dashforge/blueprint-node' const ui = load(contract) await ui.resolveAll(resolver) const envelope = ui.toContract()
An SDK that runs on your infra.
It runs inside your own service, next to your own data — nothing is evaluated, nothing is sent to a third party, nothing meters you per request. That’s what lets a regulated team put it on the critical path.
Your language. Your package manager.
Add it the way you add anything else, and call it from the framework you already run.
The SDK is one half of the picture.
It fills the contract the Builder authors — and hands it to the runtime that renders it.