Libraries

Blueprint, in your codebase.

Two libraries: the runtime that renders a contract into real UI on the client, and the SDK that fills a contract with your data on the server — shipping per language, Node and Java to start. No eval, no lock-in; you host both.

@dashforge/blueprint · runtime@dashforge/blueprint-sdk · Node · Java

Preview docs. The concepts are stable; the package names and API signatures in the code blocks are illustrative and may change before 1.0.

Overview

The library

Blueprint is an open UI contract plus a thin runtime that renders it. JSON goes in, a real screen comes out. The runtime walks each node in the contract and maps it to one of your own components — there is no interpreter and no eval. The contract describes the screen; the behavior stays in your code.

Install

Add it to your app

Install the runtime from npm and register your component set once.

bash · illustrative
npm i @dashforge/blueprint
Usage

Render a contract

Pass a contract and the components it should render with. The runtime resolves each atom to your component and returns real UI.

tsx · illustrative
import { Blueprint } from '@dashforge/blueprint'
import { components } from './my-design-system'

export function Screen({ contract }) {
  return <Blueprint contract={contract} components={components} />
}
The contract

What the JSON holds

A contract is a declarative description of the screen — and nothing else. It carries the atom, its props, the layout, conditional visibility (against local form state), access rules, i18n keys and validation. It never carries logic: no onClick, no eval, no code-from-strings.

json · illustrative
{ "version": "1.0", "type": "form", "id": "kyc",
  "fields": [
    { "type": "input",  "label": "Legal name" },
    { "type": "select", "label": "Country",
      "visibleWhen": { "field": "kind", "eq": "business" } },
    { "type": "button", "label": "Verify identity" }
  ] }
Escape hatches

Drop in real React

Anything the closed 36-atom catalog doesn’t cover, you inject as real, typed React at any node — the wall always has a door.

  • forms — bind your own form runtime to a form node.
  • slots — render your component in a named slot.
  • customNodes — map a custom node type to your React component.
Design systems

Tailwind or MUI

The same contract renders on whichever design system you register — Tailwind or MUI — because the runtime maps atoms to your components. There is no Blueprint theme baked into the output; it adopts yours.

Build on it

JSON in. Real UI out. Both halves are yours to host.