Constitution

Problem, recipe model, principles, and platform stack.

A website builder with aligned incentives. The core product is free. Sites are portable data, not platform lock-in.

nertia.ai

The problem

Most site builders optimize for retention, not ownership. Structure lives inside a proprietary editor. Export is an afterthought. Pricing drifts toward extraction once the product matures.

The result is slow publishing, bloated pages, and sites that do not survive a platform change.

The solution

Separate structure, appearance, and content. Store them as a single portable spec — a recipe. Any interface that can read and write that spec can build the site.

content( pattern + skin ) = recipe → site
LayerRole
PatternDOM structure — how sections are arranged. Fractal at section, page, and site level.
SkinTokenized design system — CSS variable overrides on a shared shadcn/ui base. Any pattern, any skin.
ContentCopy, links, media. Sources: builder UI, nertia.md (Google Drive), Google Sheet.
RecipePattern + skin + content. The complete, portable site specification.
SectionOne functional block — hero, pricing, contact, etc.

The recipe JSON is the universal adapter. Input can vary. Output is always a recipe. The rendered site follows.

AI assists refinement. It does not define structure. Pattern, skin, and content carry the site.

Principles

  • Portable data — the recipe is the site; export is first-class.
  • Design-system-first — if a primitive is not in /ds, it does not ship in the builder.
  • AI is frosting, not the cake — the recipe carries the site; AI carries only the polish.

Platform architecture

Three interfaces write to one engine. One persistence layer. One renderer.

Builder UI ──┐
ner CLI      ├──► applyCommands() ──► Firebase ──► hosted site
MCP          ──┘

No interface is privileged. A section added via CLI appears in the builder. A skin switched via MCP updates the hosted site.

Headless engine

The engine is a stateless TypeScript layer. It does not import React. It accepts a site document and a command batch; it returns an updated document.

CLI / MCP / API
      │
      ▼
cliInterpreter → commandRouter → applyCommands()
      │
      ▼
siteShapes (Zod) → Firebase RTDB → hosted render

Engine zone contract: core-engine on GitHub.

Pricing

WhatPrice
BuildBuilder, {slug}.nertia.ai, community recipesFree
HostingCustom domain, per site$20/mo
AI enhancedAI generations in the builder, per account$20/mo

One free AI credit. Thirty per month on subscription. No card required to start.

No ads. No data selling. No gating of core builder features.

How-to guides: Using nertia — getting started, export, custom domains, publish, billing.

Quick reference

Recipe:     pattern + skin + content
Engine:     src/lib/engine/applyCommands()
Schemas:    src/lib/siteShapes.ts
CLI:        src/bin/nertia.ts, src/bin/ner.ts
MCP:        POST /api/mcp
Hosted:     {slug}.nertia.ai via middleware
Constitution — nertia docs