Bring your JSON.
Organize content into projects and documents. Keep the fields and nested structures that make sense for your app.
/home/heroLESS FRICTION. MORE BUILDING.
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.
01 {
02 "heading": "Build something good.",
03 "description": "Make it yours.",
04 "sortKey": 10,
05 "isActive": true
06 }
Framework agnostic✳ Shape-driven editing✳ JSON all the way down✳
01 / THE WORKFLOW
Start with the content your app needs. Leaf++ takes care of the editing experience.
Organize content into projects and documents. Keep the fields and nested structures that make sense for your app.
/home/heroLeaf++ builds a form from your document’s shape. Edit text, numbers, lists, and nested objects, or switch to JSON view.
{ content → controls }Fetch JSON through the content API. Your application decides how it looks, where it goes, and what it does.
GET → your frontend02 / A LITTLE HANDS-ON
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.
A little structure. Room to grow.
This section is inactive.
03 / SMALL CORE. REAL CONTROL.
The useful pieces, thoughtfully connected. So you can get back to building.
Forms are generated from saved JSON. Existing property names and primitive types are protected when documents are updated.
Group documents by project, browse nested paths, and search saved content across field names and values.
Export an entire project as JSON. Preview an import before applying it, with explicit control over existing documents.
04 / SPEAKS YOUR LANGUAGE
A content API that returns JSON. Connect it to your site, your app, or the next thing you’re building.
Read the project documentation ↗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.
Less time wiring up content. More time making something that matters.
Take another look ↗