Introduction

nuforge is a fast, secure, fine-grained reactive runtime for building no-code and low-code visual page builders. You describe a page in a small DSL; nuforge parses it into a typed, reactive AST, evaluates it into a neutral View tree, and renders it with React — and it can export that same page to a clean, standalone React component.

The whole library is built around one idea: an edit should recompute only what actually depends on it. That makes it a good foundation for editors where users drag, type, and tweak hundreds of times a second.

The pipeline

A page flows through nuforge in a single, predictable direction:

DSL → @nuforge/parser → reactive AST → Frame (@nuforge/core) → View tree → @nuforge/react

The DSL is parsed into a reactive AST, a Frame from @nuforge/core evaluates that AST into a neutral View tree, and @nuforge/react renders the View tree to the DOM.

Packages

PackageDescription
@nuforge/typesAST type system + builders (t.*)
@nuforge/reactivitysignals facade over @vue/reactivity
@nuforge/parserDSL ↔ AST (Parser.parseProgram / parseExpression / stringify)
@nuforge/coreruntime: Nu, change(), Frame, history, externals, extensions
@nuforge/reactNuProvider, useNu, observer, NuFrame; /server NuStatic
@nuforge/codegentoReact(program) → clean TSX
@nuforge/editorpage-builder SDK: createEditor(nu)
@nuforge/collaborationreal-time sync via the Loro CRDT
@nuforge/react-code-editorCodeMirror DSL editor
@nuforge/codemirrorLezer grammar / language support
@nuforge/mcpModel Context Protocol server for AI assistants

What you can build

nuforge is designed for tools where a page is data your users edit, not code you ship by hand:

  • Visual page builders
  • CMS block editors
  • Email and template editors
  • Low-code dashboards
  • In-app design tools

Why nuforge

  • Fine-grained reactivity — an edit recomputes only what depends on it, with O(1) mutations.
  • Granular undo/redo — history records the writes a change made, not full snapshots.
  • Export to real React — generate a clean React component, so there is no lock-in.
  • Secure by construction — an AST allow-list plus property guards keep evaluated pages safe.
  • An editor SDKcreateEditor(nu) gives you the primitives to build your own visual builder.
  • AI-ready — an MCP server lets AI assistants read and edit pages.
  • Optional real-time collaboration — sync edits between users via the Loro CRDT.

Next steps