合約先行
@ysk-kit/contracts 是 enum、DTO、error code 與 ts-rest 路由的唯一來源。不用 TypeScript enum。
本倉是可運行的 saas flavor。身分、檔案、通知、工作、郵件、API 金鑰、加密、即時通訊已經接上。產品業務 domain 不寫入 kit。
pnpm create @ysk-kit/appysk-kit add modulepnpm layers · testapps/web ──► @ysk-kit/web-sdk ──► @ysk-kit/contracts
▲
apps/api(HTTP adapter)──────────────┤
│ │
▼ │
application / use-cases ─────────────┤
│ │
▼ │
domain(entities, ports)────────────┘
▲
│ implements
infra(prisma, redis, s3, mail)
@ysk-kit/contracts 是 enum、DTO、error code 與 ts-rest 路由的唯一來源。不用 TypeScript enum。
業務核心不知道 Express、Prisma 或 React。Domain 與 application 只依 ports。pnpm layers 強制。
瀏覽器、手機、合作夥伴與 agent 共用 REST + OpenAPI。客戶端只經 @ysk-kit/sdk 呼叫。
Auth、jobs、billing 不是每個產品都要。Thin 預設剝走 llm/billing/組織/push,需要時再加。
| 功能 | 說明 |
|---|---|
| 產生器 | pnpm create @ysk-kit/app;本倉 pnpm --filter @ysk-kit/create-app start |
| Flavor | saas、desktop、gateway、php-bridge、trading、static-web3 |
| Preset | 預設 thin;full 保留本倉示範 |
| 資料庫 | Prisma 7,預設 MySQL;--db postgresql|sqlite |
| HTTP | Express 5 預設;HTTP_ADAPTER=fastify |
| Envelope | { ok, data }/{ ok, error };四個已文件化例外 |
| 客戶端 | Vite 8 + React 19;Expo 57;Electron 44 |
| 命令列 | ysk-kit/yskk:add module、add capability、upgrade、check agent |
| 範例 | 十個 overlay:診所、CRM、庫存、工單… |
| 護欄 | ysk-kit upgrade 更新法律/skills/TypeScript/Biome;check agent 標記 enum、客戶端 Prisma、raw fetch |
| 預設埠 | API 3001 · Web 5173 · Admin 5174 · OpenAPI /docs |
| 運維 | Compose + PM2;可選 Jaeger/Prometheus/Grafana |
--flavor 選 apps;--preset 再削可選能力。php-bridge 與 static-web3 不理 preset。
| Flavor | 得到甚麼 |
|---|---|
saas | API + web + admin + 可選 mobile |
desktop | API + Electron |
gateway | API + admin(機器 API 金鑰 ysk_live_…) |
php-bridge | OpenAPI + TypeScript/PHP 客戶端,沒有 Node 應用 |
trading | API + web + worker |
static-web3 | 只有 Vite web |
--no-admin/--no-mobile 生效;--preset 與 --db 生效@ysk-kit/sdk(platform: desktop)呼叫同一 APIsafeStoragePOST /v1/me/api-keys,然後 Authorization: Bearer ysk_live_…GATEWAY.mdrequest()TRADING.md@ysk-kit/* 客戶端庫。沒有 Prisma、DATABASE_URLAPI_PUBLIC_URL 指向遠端WEB3.mdysk-kit add <name> 合併一項已編目能力。ysk-kit add module 寫一個 hexagonal HTTP 切片。兩者不要混。
llm、team(組織)、billing、push(裝置)pnpm ysk-kit add llm|team|billing|push。billing 要先有 team| 名稱 | 加入甚麼 |
|---|---|
auth | Session/OTP Prisma、JWT、OTP TTL、可選 Twilio |
rbac | 權限已在 ROLE_PERMISSIONS |
audit-log | 審計 Prisma 片段 |
storage | FileObject、S3_*、@ysk-kit/storage |
i18n | 預設語系 zh-HK |
jobs | Redis + BullMQ;未設 REDIS_URL 則記憶體佇列 |
mail | SMTP;空則 log adapter |
notifications | 站內通知路由 |
llm | Chat Completions;複製原始碼樹 |
websocket | Socket.IO realtime |
push | 裝置 + Expo/FCM |
mobile | 指向 Expo 模板 |
team | Organization + Membership(別名 org) |
apikey | ApiKey 片段 |
crypto | AES-256-GCM,CRYPTO_MASTER_KEY |
billing | Stripe Checkout;需先有 Organization |
ysk-kit add module^[a-z][a-z0-9-]*$。URL /v1/<name>--prisma 合併 title/body/authorId 模型application/,再 pnpm db:migrate && pnpm gen:openapi人類與 AI agent 走同一條路:scaffold thin、加模組、填 application/ 與 Prisma,再用 pnpm layers 驗證。
{ ok: true, data };失敗 { ok: false, error }。分頁在 data 內code 在 contracts(VALIDATION_FAILED、UNAUTHENTICATED、NOT_FOUND…)POST /v1/llm/stream SSE;發票 PDF HTTP 302;GET /docs HTML;GET /openapi.json| 層 | 預設 |
|---|---|
| Monorepo | pnpm 12.8.1 + Turborepo 2 |
| 語言 | TypeScript 6 strict + exactOptionalPropertyTypes |
| Web/Admin | Vite 8 + React 19 + TanStack Router/Query + Tailwind 4 |
| Mobile | Expo 57 |
| Desktop | Electron 44 |
| HTTP | Express 5;Fastify 5 可選 |
| 合約 | ts-rest + Zod 4 |
| 資料庫 | Prisma 7(MySQL 預設) |
| Auth | JWT + refresh;電郵/密碼與 +852 OTP |
| 觀測 | Prometheus GET /metrics;可選 OTLP/Jaeger/Grafana |
contracts · domain-kernel · applicationapi-http · api-express · api-fastifysdk · web-sdk · ui · ui-logicauth · apikey · cryptojobs · mail · storage · i18nllm · push · realtimeysk-kit upgrade,不是把 registry 的 @ysk-kit/* 裝進目的地產品@ysk-kit/auth、jobs、mail、push 或 AWS SDK@ysk-kit/ui從 npm:pnpm create @ysk-kit/app。從本倉:pnpm --filter @ysk-kit/create-app start。環境變數 YSK_ROOT 指定要修補的產品根。
--preset thin|full、--db mysql|postgresql|sqlite、--flavor、--no-admin、--no-mobile、--yesyanshekki/ysk-kit 的 v{version} 標籤add module <kebab> [--prisma] [--web]add <capability>generate openapi(等同 pnpm gen:openapi)upgrade [--dry-run]:複製允許清單上的法律、skills、TypeScript/Biome、pnpm layerscheck agent:標記 TypeScript enum、客戶端 Prisma、raw fetch(clinic-booking · crm-contacts · inventory-stock · helpdesk-tickets · membership-clubcourse-enrollment · invoice-quotes · event-rsvp · job-board · field-work-orderspnpm --filter @ysk-kit/examples start apply clinic-booking --yespnpm layers && pnpm typecheck && pnpm test && pnpm gen:openapi && pnpm ysk-kit check agent[email protected]/ysk-admin-dev(見 .env.example)以下五張是 clinic-booking 完成系統的真實介面(1280×800),不是虛構管理台。概念圖另標示。


模組頁:list + create,同一 Zod schema。真實截圖。

重疊的 SCHEDULED 時段會被拒絕。真實截圖。

信封內的一列預約。真實截圖。

GET /docs Scalar UI。真實截圖。

能力與 flavor 像六角磚互鎖。概念圖。

合約、應用、infra 分層。概念圖。

Web、手機、桌面、閘道共用合約。概念圖。
pnpm devpnpm create @ysk-kit/app my-product --preset thin --db mysql --flavor saas
cd my-product
pnpm install
cp .env.example .env
docker compose up -d mysql
pnpm db:generate && pnpm db:migrate && pnpm db:seed
pnpm ysk-kit add module appointment --prisma --web
pnpm gen:openapi
pnpm dev
# API http://127.0.0.1:3001 · Web :5173 · Admin :5174
需要代為 scaffold、白標或訂造再開發?見 商務合作 — 此頁不標價。
YSK Kit 以 MIT 授權公開。YSK Limited 可代為產生產品、加模組與能力、白標 AppShell,或以 kit 為基底訂造再開發——不向開源使用收費,訂造按範圍書面報價。
適合自行 scaffold、內部試用與開源貢獻。
pnpm create @ysk-kit/app 自行安裝適合要選定 flavor、白標、上線或接既有 PHP 的團隊。
選 flavor 與資料庫,產出可跑的 API/web/admin。
php-bridge 產出 envelope 感知的 TypeScript/PHP 客戶端。
同一套合約,Vite、Expo、Electron 各走 @ysk-kit/sdk。
Compose + PM2;需要時可裝在 YSK Server 上。
| 可訂造範圍 | 說明 |
|---|---|
| 代為 scaffold | Node 24、pnpm 12、flavor/preset/資料庫、首次 migrate/seed、pnpm dev |
| 模組與能力 | add module、llm/team/billing/push、欄位與業務規則 |
| 白標 | AppShell 名稱、標誌、預設語系 zh-HK/en |
| Flavor 裁剪 | gateway 金鑰、desktop Electron、php-bridge、trading worker、static-web3 |
| 上線 | Compose、PM2、反向代理、可選裝在 YSK Server |
| 培訓 | 合約先行、envelope、pnpm layers、agent skills |
| 交付後 | 文件、遠端培訓、約定期保固。小改動可走開發者外判月費技術票 |
由查詢到保固,每一步都有書面範圍。開源下載與代為 scaffold/訂造分開計算。
誠實邊界:YSK Kit 不是多租戶 SaaS。YSK 不把您的產品變成 YSK 雲。行業 domain 留在產品倉。CI 預設不啟動 Redis/Stripe/Twilio。不代申請雲帳號。
是。MIT 開源,可自行安裝。YSK 不向開源使用收費。代為 scaffold 與訂造才按範圍報價。
選 flavor、加模組、白標與上線的範圍差很大,報價以書面方案為準。小改動可走現有開發者外判月費技術票;大改走專案。
不會。產品仍裝在您擁有或合約指定的主機。YSK 不做多租戶雲端版 YSK Kit。
直接答案:是。MIT 開源,可自行安裝使用。代為 scaffold 或訂造見商務合作,此頁不標價。
直接答案:Omni 是本機模型閘道。Server 是單機 Linux 控制平面。Kit 是開新產品用的合約先行全端平台。
直接答案:Node.js 24 與 pnpm 12。預設 API 埠 3001、Web 5173、Admin 5174。
直接答案:預設 thin 剝走 llm、billing、organizations 與 push。full 保留完整示範。還原用 pnpm ysk-kit add。
直接答案:不要。行業 domain 留在產品倉。十個範例是 overlay,套用到新目錄。
直接答案:不會。產品仍裝在您擁有或合約指定的主機。YSK 不做多租戶雲端版 YSK Kit。