Your model.
Your way.
Define fields and relationships. Your content model becomes an editor that fits your team.
Shape your content- Title
- Text
- Story
- Markdown
- Author
- Reference
Illustrative model
The self-hosted content studio for creators and developers.
Your content, with room to grow.
REST GraphQL JSON-RPC One source. Any frontend.
Model content, author private drafts, publish snapshots and deliver them to any frontend.
A little structure. A lot of possibility.Build content types with text, dates, choices, Markdown, media and relationships. Your editor follows your model.
Explore the studioKeep drafts private, preview saved changes on your connected website, then publish deliberately. Reviews and schedules are optional.
Explore the studioOrganize published entries, then read the same snapshots through REST, GraphQL, JSON-RPC or the client. Your frontend stays yours.
Connect your frontendBuild content types with text, dates, choices, Markdown, media and relationships. Your editor follows your model.
Keep drafts private, preview saved changes on your connected website, then publish deliberately. Reviews and schedules are optional.
Organize published entries, then read the same snapshots through REST, GraphQL, JSON-RPC or the client. Your frontend stays yours.
Define fields and relationships. Your content model becomes an editor that fits your team.
Shape your contentIllustrative model
Keep drafts private, invite a review and choose when your work goes live.
Reviews and schedules are optional.
Explore publishingTranslate one entry and publish each language deliberately. Shared content stays connected.
One content source. REST, GraphQL, JSON-RPC or a typed client. Build with the tools you already love.
Connect your applicationconst articles = await cms
.content("article")
.list({ pageSize: 6 })
A good structure gives your ideas somewhere to go. Lemonade keeps the moving parts together, so your team can focus on the content.
Meet your workspaceKeep the framework you love. Read the same content through REST, typed GraphQL, JSON-RPC or our JavaScript SDK.
// Your models. A familiar way to fetch them.
import { createCMSClient } from "@lemonadecms/client"
const cms = createCMSClient({
url: "https://your-cms.example",
projectId: "your-project-id",
publicKey: "your-public-delivery-key",
})
const products = await cms.content("product").list({
select: ["name", "price"],
page: 1,
pageSize: 6,
})
The SDK currently ships from this repository. Setup guide
// Standard HTTP. No client library required.
const url = new URL(
"/api/v1/projects/your-project-id/content/product",
"https://your-cms.example",
)
url.search = new URLSearchParams({
page: "1", pageSize: "6", select: "name,price",
})
const response = await fetch(url, {
headers: { Authorization: "Bearer your-public-delivery-key" },
})
const products = await response.json()
Readable URLs and published snapshots. REST guide
# Queries follow your workspace's models.
query Products {
productCollection(page: 1, pageSize: 6) {
items {
id
fields {
name
price
}
}
hasNextPage
}
}
Send your project key in the Authorization header. GraphQL guide
Generate TypeScript definitions from a workspace schema. Use them with the SDK, regenerate when your models change, and check for drift in CI.
Learn about type generationnpx --no-install lemonade types generate \
--url "$CMS_URL" \
--workspace "$CMS_PROJECT_ID" \
--environment production \
--credential-env CMS_PUBLIC_KEY \
--out src/cms-models.ts
A journal, a catalog, a home for product updates. Three Astro examples turn published demo content into three very different websites.
Stories, authors and a reason to keep reading.
Explore REST integration
Products and categories, ready for discovery.
Explore GraphQL integration
Give every new release a place to be heard.
Explore SDK integrationExample sites and artwork are demonstration content. Checkout and payments are outside the CMS.
Keep your content on infrastructure you control. Lemonade runs on Elixir, Phoenix and PostgreSQL, with persistent media on local storage or a private S3-compatible bucket.
Read the self-hosting guideLemonade manages content. Your website decides how it looks. Connect through REST, GraphQL, JSON-RPC or the JavaScript SDK, using the frontend you already know.
Yes. See saved drafts in a connected website using a server-side preview session. Draft credentials stay on your server, and public delivery continues serving published content.
Lemonade is an actively developed self-hosted pilot. The local workflows are tested; external deployment and real-team qualification are still in progress. Read the docs before choosing it for a production project.
Your next story, collection or app update starts here.
Connection to the Studio lost
Reconnecting. Wait for the connection to return before continuing.
The Studio connection was interrupted
Reconnecting. If this keeps happening, reload the page or contact the instance operator.