AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
The embedded, code-first headless CMS for Nuxt and Next.js.
A headless CMS that lives inside your Nuxt or Next.js app: the content model is TypeScript in
your repository, the admin and APIs come with it, and there is no extra server to run.README 전문 보기 ↗The embedded, code-first headless CMS for Nuxt and Next.js.
A headless CMS that lives inside your Nuxt or Next.js app: the content model is TypeScript in your repository, the admin and APIs come with it, and there is no extra server to run.
Website · Documentation · เอกสารภาษาไทย · Getting started · Examples · Sponsor
/admin and
the API at /api/cms. One deployment, one database (yours, with prefixed tables).__Host- and HSTS is on in production, unreadable
documents answer 404, and the audit log is signed against tampering.[!NOTE] Easy CMS 1.0 is out (2026-10-17), the first version meant for production use. From 1.0, breaking changes come only in a major release, with an upgrade guide; renamed APIs keep working until the next major, with a warning. Versions and deprecations says what is covered (the shop, GraphQL and MCP plugins are still experimental). Upgrading from 0.x: From 0.x to 1.0.
To try it without installing anything, use the Deploy buttons above: a blog with its admin on Vercel or Netlify, with a database and file storage made for you (one-click deploy).
In a Nuxt 4 or Next.js 15+ project:
npm create easy-cms@latest # or: pnpm create easy-cms · yarn create easy-cms · bun create easy-cms
npm run dev # then open http://localhost:3000/admin
create-easy-cms installs the packages with your package manager, writes easy-cms.config.ts
with a sample collection and a secret in .env, and wires up the framework. Describe your
content in the config:
// easy-cms.config.ts
import { defineConfig } from '@easy-cms/core'
import { sqlite } from '@easy-cms/db-sqlite'
export default defineConfig({
secret: process.env.EASY_CMS_SECRET!,
db: sqlite({ url: 'file:./cms.db' }),
collections: [
{
slug: 'posts',
drafts: true,
fields: [
{ name: 'title', type: 'text', required: true },
{ name: 'slug', type: 'slug', from: 'title' },
{ name: 'body', type: 'richText' },
],
},
],
})
Then read it in your pages, fully typed:
// Nuxt: server/api/posts.get.ts
export default defineEventHandler(async () => {
const cms = await useEasyCMS()
return cms.find('posts', { sort: '-createdAt', limit: 10 })
})
Next.js uses getEasyCMS(config) in Server Components; any other client uses REST at
/api/cms/posts.
No Nuxt or Next.js? Run the same command in an empty directory to get a standalone server:
npm create easy-cms@latest my-cms
cd my-cms && npm run dev # http://localhost:4000/admin
Content modeling
Admin
APIs
where queries, a GraphQL
API (plugin), and generated types for frontends in other repositoriesData and operations
easy-cms CLI: migrations, backups, copying between databases, scheduled jobsSEO and AI
llms.txt, Markdown versions of pages and AI crawler rules| Plugin | What it adds | Guide |
|---|---|---|
@easy-cms/plugin-seo | Meta fields, search preview, sitemap, robots.txt, structured data, llms.txt | SEO |
@easy-cms/plugin-form-builder | Forms built in the admin, submissions with an overview and a dashboard panel, email notifications, spam protection, <easy-form> | Forms |
@easy-cms/plugin-redirects | Redirects managed in the admin, automatic redirects when a page moves | Redirects |
@easy-cms/plugin-nested-docs | Pages inside pages: parents, full paths, breadcrumbs, a tree in the admin | Nested pages |
@easy-cms/plugin-graphql (experimental) | GraphQL API: queries and mutations for every collection and global, with your access rules | GraphQL |
@easy-cms/plugin-mcp (experimental) |
Experimental plugins share the version number but may still change in a minor release, even after 1.0, until they are declared stable.
Plugins are functions over your config: write your own with fields, endpoints, admin components,
admin pages, dashboard panels and CLI commands. See
Plugins. Packages can also add field types, such as color from @easy-cms/fields: see
Custom field types.
| Package | |
|---|---|
@easy-cms/core | Config, Local API, REST handler, auth, access control, hooks, localization, versions, webhooks |
@easy-cms/nuxt | Nuxt 4 module: REST API, admin, typed useEasyCMS() |
@easy-cms/next | Next.js adapter: route handlers, typed getEasyCMS() |
easy-cms | CLI: migrations, types, users, backups, standalone serve |
create-easy-cms | Adds Easy CMS to a project, or creates a standalone server |
@easy-cms/db-sqlite | SQLite / libSQL database adapter |
@easy-cms/db-postgres | Postgres adapter (postgres.js or PGlite) |
@easy-cms/storage-s3 | Uploads on S3, Cloudflare R2 or MinIO |
@easy-cms/storage-vercel-blob | Uploads on Vercel Blob |
| Example | |
|---|---|
examples/nuxt-blog | Nuxt 4 blog on SQLite, with every official plugin |
examples/next-blog | Next.js 16 blog on Postgres (PGlite locally) |
examples/standalone | Standalone server with a plain HTML frontend on another origin |
examples/shop | Next.js 16 shop: products, cart, checkout (bank transfer, or Stripe), customer accounts |
examples/multi-tenant | Two brands in one CMS, each with its own content, media and members |
Issues and pull requests are welcome. CONTRIBUTING.md explains how to build, test and propose changes; docs/DESIGN.md and the architecture decisions explain why things are the way they are.
Please report security issues privately, as described in SECURITY.md.
Easy CMS is built in spare time. If it saves you or your team time, consider sponsoring its development: sponsorship pays for the work toward 1.0, docs (in English and Thai) and faster fixes. Sponsors at $5 a month or more are listed here, and company sponsors also get their logo on the website.
The first 10 sponsors, at any tier, are listed here permanently, even if they stop sponsoring later. Spots left: 10 of 10.
| Model Context Protocol server for AI assistants |
| MCP |
@easy-cms/plugin-multi-tenant | Several sites or clients in one CMS: content, members, roles and settings per tenant, a tenant switcher | Multi-tenant |
@easy-cms/plugin-ecommerce (experimental) | A shop: products and variants, prices in several currencies, carts, checkout with Stripe or bank transfer (unpaid orders expire and return their stock), orders, stock, customer accounts, React and Vue hooks | Shop |
@easy-cms/storage-netlify-blobs| Uploads on Netlify Blobs |
@easy-cms/email-smtp | Email over SMTP |
@easy-cms/auth-oauth | Single sign-on: Google, Microsoft, GitHub, OpenID Connect |
@easy-cms/richtext | Rich text to safe HTML or Markdown |
@easy-cms/fields | More field types: color, with a picker and swatches |
@easy-cms/admin | The admin UI (installed by the adapters) |
@easy-cms/drizzle | Shared database layer (installed by the database adapters) |