ภาพรวมระบบ
เว็บไซต์นี้มี 2 ส่วนหลัก: VitePress build แบบ static และ Node process ที่คุมสิทธิ์การเข้าถึง พร้อมทำหน้าที่เป็น CMS
Build-time: VitePress
pnpm run docs:build อ่านไฟล์ Markdown ทุกไฟล์ใต้ docs/ แล้ว build เป็นเว็บ static ที่ docs/.vitepress/dist ขั้นตอนนี้ไม่ติดต่อ database หรือ network service ใดๆ ทั้งสิ้น
แหล่งที่มาของเนื้อหา
เนื้อหาทั้งหมดเป็นไฟล์ Markdown ที่ Git track ไว้ — ไม่มี database เก็บเนื้อหาหน้าเว็บเลย แม้จะมี CMS อยู่ก็ตาม ดู ส่วนควบคุมสิทธิ์ ด้านล่างว่า database ของ CMS เก็บอะไรจริงๆ
pnpm run docs:buildRun-time: แอป cms
Node process เดียว (คุมโดย PM2 ในชื่อ logicton-docs-cms) ทำหน้าที่ที่เหลือทั้งหมด:
| Path | จัดการโดย | หน้าที่ |
|---|---|---|
/admin/**, /api/** | Payload | Admin panel ของ CMS และ REST/GraphQL API |
/login | หน้า custom | ล็อกอินผ่าน POST /api/users/login |
| ที่เหลือทั้งหมด | Custom route handler | เช็คสิทธิ์ก่อน แล้ว serve docs/.vitepress/dist |
TIP
เพราะ route handler อ่าน docs/.vitepress/dist จาก disk ทุก request การแก้เนื้อหาอย่างเดียว (แก้ .md, rebuild) ไม่ต้อง restart PM2
การควบคุมสิทธิ์
collection Users เป็นข้อมูลเดียวที่ Payload เก็บใน database ของตัวเอง (SQLite) เนื้อหาเอกสาร ไม่เคยถูก duplicate เข้า database นั้นเลย — ตัวแก้ไข markdown ของ CMS อ่าน/เขียนไฟล์ .md ไฟล์เดียวกับที่ Git track อยู่จริง
WARNING
Users.access.create อนุญาตให้เฉพาะ admin ที่ล็อกอินอยู่แล้วสร้าง account ใหม่ได้เท่านั้น ไม่มีระบบสมัครสมาชิกสาธารณะ — admin เป็นคนสร้าง account ให้ทุกคนผ่าน /admin
ดู การ Deploy สำหรับคำสั่งที่ใช้ build และ restart process นี้จริงๆ