CMSCMSby SZ

一套真正屬於自己的 CMS。​內容、登入、搜尋、排程,​全部都是你的;​要加功能就裝一個 extension,​核心不用動

在 GitHub 上查看開發中 · Apache-2.0
Cloudflare Workers · Passkey 登入

用 extension 長大

宣告、宣告 + 程式碼、純程式碼三種擴充,搭配私有 registry。功能是加上去的,不是砍掉重練。

Passkey 優先

WebAuthn 登入,沒有密碼可以外洩、可以忘記。這是 sz.ws 的技術宣言,不是選項。

跑在邊緣

Next.js + OpenNext 部署到 Cloudflare Workers,D1 / R2 存資料,全球就近回應。

功能是加上去的,不是砍掉重練

三種擴充形態,從一個 manifest 檔到整包程式碼都收。裝好就出現在後台,核心不用改一行。

宣告式

一個 manifest.json 就是一個功能:內容型別、後台頁面、公開路由全部用宣告描述 —— 右邊的聯絡表單就是 registry 裡的真實範例。

宣告 + 程式碼

manifest 之外再帶自己的 admin 元件與 SQL,放進 registry 一起發佈、一起版本化。

純程式碼

extensions/<id>/ 整包住進 repo:自己的 admin、公開頁、API 和 kit,編譯期就併進核心。

{
  "kind": "declarative",
  "id": "contact",
  "coreApi": "^1.3.0",
  "contentTypes": [{
    "name": "submission",
    "fields": [
      { "key": "name",    "type": "text", "required": true },
      { "key": "email",   "type": "text", "required": true },
      { "key": "message", "type": "text", "required": true }
    ]
  }],
  "adminPages":   [{ "view": "collection", "layout": "table" }],
  "publicRoutes": [{ "pattern": "/contact", "view": "form" }]
}

registry 裡 contact 擴充的 manifest(節錄)—— 宣告式表單,匿名投稿直接落進共用內容表。

一行指令裝進來

cms add 從 registry 抓檔、落地 extensions/<id>/、patch registry.ts。支援私有 registry 的 token,重跑是冪等的 —— 不會重複插行。

~/cms $ npx @sz.ws/cms add contact

registry — manifest.json 已抓取

extensions/contact/ 落地完成

extensions/registry.ts 已 patch

--dry-run 先看它會做什麼;私有 registry 走 SZWS_REGISTRY_TOKEN。

AI 助理,但動手前一定先問你

後台內建一個對話面板,直接接你的內容、訂單和設定。它能回答問題、擬修改提案、做真正的運算 —— 但每一次寫入都會先變成提案讓你看過。你沒點頭,什麼都不會變。

動手前先問過你

新增一篇文章、改一個狀態、退一筆款 —— 每個寫入動作都會先變成提案等你確認,沒有「跳過確認」這個選項。

用圖表回答,不是刷一串數字

問它這個月訂單多少,它會用後台儀表板同一套圖表元件畫出來 —— 是從你的資料算出來的真數字,不是編出來的。

真的會算,不是用猜的

Web Worker 裡跑一個 QuickJS 沙盒做運算 —— 模型是真的執行程式碼算數字,不是靠估算出來的。

後台的手感

這些不是截圖,是和後台同一支的真元件 —— 文字可以選取、滑鼠移上去會反應。它們照同一條時間軸循環演:⌘K 搜尋、數字長出來、存檔列升起又降下。

搜尋內容…
最近搜尋
cloudflare workers擴充功能註冊表
⌘K 開啟 · esc 關閉 導覽 · 前往
近 30 天最多人看

寫你的第一個 extension

0次瀏覽
文章

v0.4 發行說明

草稿已發佈
部署到 Cloudflare Workers3,140
Blog
排程與草稿的運作方式2,260
Blog
私有 registry 指南1,180
文件