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
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, anddatapayload. - DataSchema — defines the shape of a DataObject's
datafield. 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) │
└─────────────────────────────────────┘
``