Closure Apps

Closure Apps is a semantic graph platform for building, deploying, and managing web applications without traditional code generation.

How It Works

Every application in Closure Apps is represented as a semantic graph of JSON-LD DataObjects. There is no build step, no bundling, no code generation. The graph is the runtime.

When you create an app, you're composing a graph of typed objects:

  • App — the root node, referencing pages, components, styles, and infrastructure
  • Page — defines a route, layout, and children
  • Component — a reusable UI element with props, content, and optional template
  • Style — design tokens, color palettes, typography
  • Schema — defines the structure of any object type
Changes to any object update the graph immediately. The preview renders directly from the graph in real-time.

Key Concepts

  • Semantic Closure — the principle that an application is fully described by its graph. No external state or code is needed.
  • DataObject — the universal unit. Everything is a DataObject with an @id, @type, schemaId, and data payload.
  • DataSchema — defines the shape of a DataObject's data field. Schemas are themselves DataObjects.
  • ClosureWeb Renderer — the server-side engine that interprets a page's DataObject tree and produces HTML.
  • Template Rendering — DataObjects can include raw HTML templates with {{children}}, {{content}}, and {{props.X}} interpolation for pixel-perfect control.

Architecture

`` ┌─────────────────────────────────────┐ │ Workspace UI │ │ (React + Zustand + GraphQL) │ ├─────────────────────────────────────┤ │ GraphQL API │ │ (Yoga + Prisma resolvers) │ ├─────────────────────────────────────┤ │ Prisma + PostgreSQL │ │ (pgvector for semantic search) │ ├─────────────────────────────────────┤ │ ClosureWeb Renderer │ │ (SSR from DataObject graph) │ ├─────────────────────────────────────┤ │ Agent System │ │ (LLM + tools + SSE streaming) │ └─────────────────────────────────────┘ ``