A CMS you install, not one you run beside your app.
Easy CMS is an npm package. Your content model is TypeScript in your repo, your pages read it with a typed API, and the admin ships with the app you already deploy.
What a separate CMS costs you
- A second service to deploy, secure, monitor and keep in step with your app.
- A schema built in a web UI that drifts from the code that reads it.
- Untyped JSON over HTTP, even when the page renders on the same server.
- Content locked in someone else’s database, behind someone else’s pricing.
// easy-cms.config.ts
export default defineConfig({
db: sqlite({ url: 'file:./data/cms.db' }),
collections: [
{
slug: 'posts',
drafts: true,
fields: [
{ name: 'title', type: 'text', required: true },
{ name: 'slug', type: 'slug', from: 'title' },
{ name: 'body', type: 'richText' },
],
},
],
})
// app/posts/page.tsx
const cms = await getEasyCMS(config)
const { docs } = await cms.find('posts', { limit: 10 })
docs[0].title // stringHow Easy CMS helps
One deployment
Route handlers in Next.js or a module in Nuxt mount the admin and the API inside your app. Other frontends use the standalone server.
Read the docsContent model in TypeScript
Collections, fields, access rules and hooks live in easy-cms.config.ts, reviewed in pull requests like any other code.
Read the docsA typed Local API
Server code calls cms.find() with types generated from your config. No HTTP round trip, no hand-written types.
Read the docsYour database, real tables
SQLite (a file or Turso) or Postgres. Documents are rows and columns you can still query with SQL.
Read the docsMigrations you commit
Schema changes become migration files in git, applied on deploy. Production refuses a config that doesn’t match.
Read the docsREST, GraphQL and MCP
REST at /api/cms for any client; GraphQL and an MCP server for AI assistants come as experimental plugins.
Read the docsWhen it isn’t a fit
- Editors must change the content model themselves, without a developer: here the model is code.
- You need edge runtimes: Easy CMS needs Node.js 22.12 or newer.
- You need a large marketplace of ready-made integrations today.
Easy CMS is young: its first release was in September 2026 and its community is small. Every other product here has been in production longer, with more people answering questions.
Try it in your own app.
One command sets up a Next.js or Nuxt project with the admin, or deploy a starter to your own Vercel or Netlify.
npm create easy-cms@latest