UIForge¶
UIForge is a specification-driven UI composition platform. Pages are described in UISpec — a deterministic JSON Intermediate Representation — validated against a versioned component registry, and rendered by interchangeable runtimes: React and standard web components via Lit.
The core idea: code defines component capabilities; the spec composes and configures them. Instead of hand-coding every screen, teams (and AI agents) author declarative PageSpecs that reference registered, contract-checked components — the model that powers customizable platforms like Salesforce Lightning, Splunk Dashboard Studio, and Shopify themes, as a vendor-neutral open foundation.
PageSpec JSON ──► Schema validation ──► Registry validation ──► Runtime engines ──► Renderer (React | Lit)
Why a UI Intermediate Representation?¶
Because the artifact is declarative JSON rather than framework code, a UIForge page can be:
- Authored visually or edited as source
- Generated by AI — an agent emits a valid PageSpec, never React code
- Validated before deployment — schema, registry contracts, profile constraints
- Version-controlled and reviewed in pull requests like any other artifact
- Rendered consistently across runtimes, today React and Lit web components
What ships in v0.1¶
| Layer | What you get |
|---|---|
| UISpec IR | PageSpec, ComponentInstance, five layout primitives, data bindings, interactions, navigation, visibility rules, themes — Go types as the source of truth with generated JSON Schemas |
| Component registry | ComponentSpec manifests with property schemas, data inputs, events, and capabilities; 25 builtin manifests across four namespaces; external manifest loading and version resolution |
| Runtime engines | ${...} expressions, page state, event→action interactions, PageSpec diffing — shared by all renderers |
| Two renderers | @plexusone/uiforge-renderer (React) and @plexusone/uiforge-renderer-lit (<uiforge-page>), emitting an identical data-uiforge-* DOM contract |
| Data runtime | Pluggable async connectors with loading/error states, caching, and declarative refresh |
| Design-system governance | Semantic token contract integrated with design-system-spec, including white-label theming |
Where to start¶
- Getting Started — render your first PageSpec in Go, React, or plain HTML
- PageSpec — the anatomy of a page
- Component Reference — every builtin component, generated from the registry manifests
- Architecture — how the pieces fit together