Leaf++ Open the editor ↗

LESS FRICTION. MORE BUILDING.

Your content. Your code. In sync.

Make your JSON editable. Leaf++ gives your content a home and your team a simple editor—while you keep control of every pixel.

⌘Your frontend. Your structure. Plain JSON.

home / hero.jsonJSON
01  {
02    "heading": "Build something good.",
03    "description": "Make it yours.",
04    "sortKey": 10,
05    "isActive": true
06  }
Structured by youapplication/json
Leaf++EDITOR CONCEPT/home/hero
Hero section● Active
Heading
Build something good.
Description
Make it yours.
Form view Save changes ↗
✓A little structure. A lot of possibility.
CONTENT, WITHOUT THE COMPLICATION.

Framework agnostic Shape-driven editing JSON all the way down

01 / THE WORKFLOW

From object to editable. Without the detour.

Start with the content your app needs. Leaf++ takes care of the editing experience.

01 ↗

Bring your JSON.

Organize content into projects and documents. Keep the fields and nested structures that make sense for your app.

/home/hero
02 ↗

Give it an editor.

Leaf++ builds a form from your document’s shape. Edit text, numbers, lists, and nested objects, or switch to JSON view.

{ content → controls }
03 ↗

Build your way.

Fetch JSON through the content API. Your application decides how it looks, where it goes, and what it does.

GET → your frontend

02 / A LITTLE HANDS-ON

Change the words. Keep the possibilities.

Try a small, browser-only example. Edit the fields and watch the same content update in JSON and in a page preview.

Illustrative demo · Nothing is saved to the service.

/home/hero
YOUR FRONTEND / PREVIEW

Build something good.

A little structure. Room to grow.

03 / SMALL CORE. REAL CONTROL.

Content infrastructure. Creative freedom.

The useful pieces, thoughtfully connected. So you can get back to building.

Your shape is the starting point.

Forms are generated from saved JSON. Existing property names and primitive types are protected when documents are updated.

A place for every piece.

Group documents by project, browse nested paths, and search saved content across field names and values.

Content you can take with you.

Export an entire project as JSON. Preview an import before applying it, with explicit control over existing documents.

04 / SPEAKS YOUR LANGUAGE

One request. All yours from here.

A content API that returns JSON. Connect it to your site, your app, or the next thing you’re building.

Read the project documentation ↗
Fetch a document
const response = await fetch(
  '/api/projects/Leaf-Plus-Plus/content/home/hero'
);

if (!response.ok) throw new Error('Content unavailable');
const content = await response.json();

// Your components take it from here.

Example request · Relative to your Leaf++ service origin

LET YOUR CONTENT GROW.

A lighter way to keep things fresh.

Less time wiring up content. More time making something that matters.

Take another look ↗