Skip to content

ภาพรวมระบบ

เว็บไซต์นี้มี 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 เก็บอะไรจริงๆ

bash
pnpm run docs:build

Run-time: แอป cms

Node process เดียว (คุมโดย PM2 ในชื่อ logicton-docs-cms) ทำหน้าที่ที่เหลือทั้งหมด:

Pathจัดการโดยหน้าที่
/admin/**, /api/**PayloadAdmin 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

Request flow diagram

ดู การ Deploy สำหรับคำสั่งที่ใช้ build และ restart process นี้จริงๆ