1.0Easy CMS 1.0 is out: stable from here on

CMS ที่ทีมไทย ใช้ได้ทั้งทีม

หน้า admin ภาษาไทยครบทุกหน้าจอ เอกสารภาษาไทยทุกหน้า บทบาท, SSO และ audit log ฟรีภายใต้ MIT ติดตั้งในแอป Next.js หรือ Nuxt แล้วรันบน server และฐานข้อมูลของคุณเอง ไม่มีค่าใช้จ่ายต่อที่นั่ง

$npm create easy-cms@latest
หรือ deploy starter ในคลิกเดียว: Deploy ไป Vercel Deploy ไป Netlifydeploy แล้วได้อะไร
ฟรีทุกฟีเจอร์ (MIT)admin และเอกสารภาษาไทยครบNext.js 15+ · Nuxt
localhost:3000/admin
แดชบอร์ดของ Easy CMSแดชบอร์ดของ Easy CMS
app/page.tsxServer Component
const cms = await getEasyCMS(config)
const { docs } = await cms.find('posts')
// docs: Post[] ได้ type จาก config ของคุณ
ใช้ร่วมกับ
  • Next.js 15+
  • Nuxt
  • PostgreSQL
  • SQLite · Turso
  • PGlite
  • S3 · R2 · MinIO
  • Vercel · Netlify
ฝังในแอป ไม่ใช่บริการแยก

ไม่ต้องมี server ตัวที่สองให้ดูแล จ่ายเงิน หรือคอย sync

headless CMS ทั่วไปเป็นอีกบริการหนึ่งที่มีฐานข้อมูลและ API key ของตัวเอง Easy CMS เป็นแพ็กเกจ npm ที่แอปของคุณติดตั้งเข้าไป เนื้อหาจึงไปพร้อมกับโค้ดที่แสดงผลมัน

headless CMS แบบบริการแยก

สองแอป สองฐานข้อมูล

แอป Next.js ของคุณ
pagesfetch()
บริการ CMSdeploy แยก
ฐานข้อมูล CMSไม่ใช่ของคุณ
  • schema อยู่ในหน้าเว็บ ไม่ได้อยู่ใน repo
  • ต้องสร้าง type แยกอีกขั้น
  • ทุกหน้าต้องเรียกข้ามเครือข่าย
Easy CMS

แอปเดียว ฐานข้อมูลเดียว

แอป Next.js ของคุณ
pages → getEasyCMS()/admin/api/cms
@easy-cms/next@easy-cms/core
ฐานข้อมูลของคุณPostgres หรือ SQLite · ใช้แค่ตาราง ecms_
  • โครงสร้างเนื้อหาอยู่ใน easy-cms.config.ts และ review ใน PR ได้
  • type มาจาก config โดยตรง ไม่ต้อง build
  • deploy ได้ทุกที่ที่แอปของคุณรันอยู่แล้ว
Code-first

สามไฟล์ แอปของคุณก็มี CMS

กำหนด collection และ field ด้วย TypeScript ฟอร์มใน admin การตรวจข้อมูล สิทธิ์การเข้าถึง และ API ที่มี type ถูกสร้างจากไฟล์เดียวนี้

import { defineConfig } from '@easy-cms/core'
import { postgres } from '@easy-cms/db-postgres'
import { seoPlugin } from '@easy-cms/plugin-seo'

export default defineConfig({
  secret: process.env.EASY_CMS_SECRET!,
  db: postgres({ url: process.env.DATABASE_URL! }),
  localization: { locales: ['en', 'th'], defaultLocale: 'en' },
  collections: [
    {
      slug: 'posts',
      drafts: true, versions: true, schedule: true,
      useAsTitle: 'title',
      fields: [
        { name: 'title', type: 'text', required: true, localized: true },
        { name: 'slug', type: 'slug', from: 'title' },
        { name: 'body', type: 'richText', localized: true },
      ],
    },
  ],
  plugins: [seoPlugin({ collections: ['posts'] })],
})
มีให้ในตัว

สิ่งที่ editor ต้องการ และสิ่งที่นักพัฒนา review ได้

ฉบับร่างและประวัติเวอร์ชัน

แก้บทความที่เผยแพร่แล้วได้โดยหน้าเว็บจริงไม่เปลี่ยน เทียบเวอร์ชันและกู้คืนเวอร์ชันใดก็ได้

ตัวอย่างสด

หน้าเว็บจริงแสดงข้างฟอร์ม และเปลี่ยนตามที่ editor พิมพ์ ก่อนจะเผยแพร่

เนื้อหาหลายภาษา

แต่ละภาษามีค่าของตัวเอง และทุกรายการบอกสถานะการแปล หน้า admin ใช้ได้ทั้งไทยและอังกฤษ

บทบาทและ single sign-on

ติ๊กว่าแต่ละบทบาททำอะไรได้ใน admin ลงไปถึงระดับ field และ login ด้วย Google, Microsoft หรือ GitHub

คลังไฟล์ที่มีโฟลเดอร์

โฟลเดอร์ อัปโหลดหลายไฟล์พร้อมกัน ไฟล์ส่วนตัวพร้อมลิงก์ที่มีลายเซ็น และเก็บไฟล์บน S3, R2 หรือ Vercel Blob

Audit log และการสำรองข้อมูล

บันทึกที่มีลายเซ็นว่าใครแก้อะไร และสำรองฐานข้อมูลได้เองหรือตั้งเวลาจากหน้า admin

ตั้งเวลาเผยแพร่

เผยแพร่หรือยกเลิกตามเวลาที่ตั้ง งานที่ถึงเวลารันทุกนาทีบน server ที่คุณมีอยู่แล้ว

SEO พร้อมใช้

sitemap, hreflang, JSON-LD และ llms.txt จากเนื้อหาที่มีอยู่แล้ว

API ที่มี type, REST และ GraphQL

Local API ที่มี type ในโค้ดฝั่ง server, REST สำหรับ client ทุกแบบ และ GraphQL กับ MCP เป็น plugin

Plugin ทางการ

เพิ่มฟีเจอร์ด้วยบรรทัดเดียวใน plugins

แต่ละ plugin เพิ่ม collection หน้า admin และ API route ของตัวเอง พร้อม migration และเขียน plugin เองได้ด้วย hook ชุดเดียวกัน

@easy-cms/plugin-seo

field สำหรับ meta, sitemap, hreflang และ JSON-LD

seo
@easy-cms/plugin-form-builder

editor สร้างฟอร์มเอง ข้อมูลที่ส่งมาถูกตรวจ เก็บ และ export เป็น CSV ได้

forms
@easy-cms/plugin-redirects

redirect แบบ 301 ถึง 308 สร้างให้อัตโนมัติเมื่อหน้าเปลี่ยนที่อยู่

seo
@easy-cms/plugin-nested-docs

หน้าย่อยในหน้า พร้อม path และ breadcrumb แยกตามภาษา

pages
@easy-cms/plugin-multi-tenant

หลายเว็บหรือหลายลูกค้าใน CMS เดียว แต่ละแห่งมีสมาชิกและเนื้อหาของตัวเอง

0.44
@easy-cms/plugin-ecommerce

สินค้า ตะกร้า และชำระเงินด้วย Stripe, PromptPay หรือโอนเงิน

0.46
@easy-cms/plugin-graphql

GraphQL API ที่ใช้สิทธิ์การเข้าถึงเดียวกับ REST

0.43
@easy-cms/plugin-mcp

MCP server ให้ผู้ช่วย AI ทำงานกับเนื้อหาของคุณ

ai
หน้า admin

หน้า admin ที่ editor ของคุณจะชอบใช้

สร้างจาก config ของคุณ มีทั้งธีมสว่างและมืด ภาษาไทยและอังกฤษ ไม่ต้องออกแบบหรือ host เอง

your-site.com/admin
แดชบอร์ดของ Easy CMSแดชบอร์ดของ Easy CMS
สลับธีมของเว็บเพื่อดูหน้า admin แบบสว่างหรือมืด· admin.locale: 'en' | 'th'
จากบล็อก

บทความและคู่มือล่าสุด

บทความทั้งหมด
auth.google()
คู่มือ17 ต.ค. 2569

ให้ทีมเข้าหน้า admin ด้วยบัญชี Google

ไม่ต้องแจกรหัสผ่านให้ทุกคนในทีมอีกต่อไป ตั้งค่าให้ทีมเข้าหน้า admin ของ Easy CMS ด้วยบัญชี Google ในไม่กี่ขั้นตอน และเลือกได้ว่าใครเข้าได้บ้าง

อ่าน · 4 นาที
wp vs ecms
คู่มือ17 ต.ค. 2569

Easy CMS กับ WordPress: เลือกอะไรดีสำหรับเว็บของทีม

WordPress อยู่เบื้องหลังเว็บจำนวนมาก และยังเป็นตัวเลือกที่ดีในหลายกรณี บทความนี้บอกตรงๆ ว่าเมื่อไรควรใช้ WordPress และเมื่อไร Easy CMS เหมาะกว่า

อ่าน · 3 นาที
cms.choose()
คู่มือ17 ต.ค. 2569

เลือก headless CMS ให้ทีมไทย: 6 คำถามที่ควรถามก่อน

CMS ที่เลือกวันนี้จะอยู่กับทีมไปอีกหลายปี หกคำถามนี้ช่วยให้เลือกได้ตรงกับทีมจริง ไม่ใช่แค่ตามกระแส ไม่ว่าสุดท้ายจะเลือก Easy CMS หรือไม่

อ่าน · 4 นาที
1.0

เสถียรตั้งแต่ 1.0

  • breaking change มาเฉพาะใน major release และมีคู่มืออัปเกรดทุกครั้ง
  • API ที่เปลี่ยนชื่อยังใช้ได้จนถึง major ถัดไป พร้อมคำเตือน
  • ทุกการเปลี่ยนแปลงทดสอบกับฐานข้อมูลที่สร้างจาก release เก่า ทั้ง SQLite และ Postgres
  • major ก่อนหน้ายังได้ security fix ต่ออีกหกเดือนหลัง major ถัดไปออก
สัญญานี้ครอบคลุมอะไรบ้าง

ส่งเนื้อหาไปพร้อมกับโค้ดที่แสดงผลมัน

สร้างโปรเจกต์ Next.js หรือ Nuxt พร้อม Easy CMS ได้ในราวหนึ่งนาที ใช้สัญญาอนุญาต MIT และรันบนโครงสร้างของคุณเอง