文件

文件

運行 Zest 所需的一切。

快速開始

前置需求

  • Node.js 20+(建議使用 LTS)
  • pnpm 9+
  • macOS 以支援 BLE 熱感打印機
  • Xcode CLI 工具(用於原生編譯)

安裝

Terminal
git clone https://github.com/ec812/zestcd zestpnpm installpnpm dev

開發伺服器將在 http://localhost:3898 啟動

可用指令

Command說明
pnpm dev啟動開發伺服器(port 3898)
pnpm build生產環境建構
pnpm start啟動生產伺服器
pnpm lint執行 ESLint
pnpm test執行單元測試

功能

顧客端

功能Route說明
公開菜單/多語言菜品菜單(日文、英文、中文)按分類分組
掃碼點餐/order/[qr_code]掃描桌位 QR 碼,瀏覽菜單、加單、查看帳單
帳單查看/bill/[qr_code]唯讀帳單,適用於開放中的桌位訂單
訂位/book公開訂位表單(姓名、人數、日期時間、聯絡方式)
顧客命令列zest專為 AI 代理設計的 CLI,用於瀏覽菜單、下單和查詢狀態

員工後台

功能Route說明
儀表板/admin統計數據、進行中訂單、今日訂位、暢銷菜品
菜品管理/admin/dishes菜品增刪改查、圖片上傳、AI 輔助多語言填充
桌位管理/admin/tables管理桌位、QR 碼、容量、區域
訂單管理/admin/orders看板式訂單板,SSE 即時更新
訂位管理/admin/bookings月曆和列表視圖管理訂位
菜品變體/admin/variants變體群組和選項(如尺寸、溫度)
時段管理/admin/time-slots早午晚餐時段,支援每道菜不同定價
設定/admin/settings主題、服務費、基本費、地址、打印機名稱

後端能力

  • 多語言資料模型 — 每道菜、每個時段、每個描述都包含 *_ja、*_en 和 *_zh 欄位
  • 基於角色的 API 認證 — super_admin、admin 和 staff 具有不同權限範圍
  • 按輪次點餐、逐項廚房狀態追蹤、服務費、基本費、付款追蹤
  • 堂食和外帶 — 桌位 QR 點餐和帶取餐碼的外帶
  • 即時更新 — Server-Sent Events(/api/orders/stream)用於即時訂單看板
  • 熱感打印 — ESC/POS 廨房單據和收據,透過 BLE 連接
  • 速率限制 — 公開訂單端點的滑動視窗限制

顧客命令列工具

zest CLI 讓顧客和 AI 代理能從命令列瀏覽菜單、下單和查詢狀態。

安裝

Terminal
npm install -g zest-cli# or run without installing:npx zest-cli <command>

指令

Command說明
zest menu列出所有可用菜品
zest menu --category sashimi --pretty按分類篩選,以人類可讀格式輸出
zest dish <id>顯示單道菜品詳情
zest order --mode dine-in --table T01 --items '[...]'下堂食訂單
zest order --mode takeaway --name John --phone 5555 --items '[...]'下外帶訂單
zest status <order_id>查詢訂單狀態和明細
zest info顯示餐廳設定
zest configure建立設定檔,包含 API URL 和顧客 token

輸出格式

  • 預設輸出為緊湊 JSON(適合 AI 代理)
  • --pretty 啟用人類可讀的終端輸出,價格格式化顯示

設定

CLI 將設定儲存在 ~/.zest/config.json。執行 zest configure 可自動建立此檔案。

API URL 優先順序

  • 1. ZEST_API_URL 環境變數
  • 2. ~/.zest/config.json 中的 apiUrl
  • 3. 預設值:http://localhost:3898

技術棧

層級技術
框架Next.js 16 (App Router) + React 19
語言TypeScript 5
資料庫SQLite via better-sqlite3 (WAL mode)
樣式Tailwind CSS v4 + shadcn/ui
認證bcrypt + SHA-256 API keys (sk- prefix)
打印ESC/POS, @abandonware/noble (BLE)
人工智慧DeepSeek API (optional)
命令列工具Commander.js + Axios
套件管理pnpm (monorepo)

設定

餐廳設定

透過 /admin/settings 頁面設定你的餐廳。所有設定儲存在 SQLite 中,可透過 REST API 存取。

  • 主題 — 4 款內建配色主題(鼠尾草綠、海洋藍、深紅、薰衣草紫)
  • 深色模式 — 切換淺色和深色外觀
  • 服務費 — 啟用/停用,設定百分比(應用於訂單)
  • 基本費 — 每人基本消費
  • 餐廳地址和電話號碼
  • 打印機名稱 — 設定廚房和吧台打印機目標

主題

Sage Green

溫暖的大地綠 — Zest 原始配色

Ocean Blue

靈感來自海洋的冷色深藍

Crimson Red

大膽、深沉的深紅色

Lavender Purple

柔和優雅的紫色調

熱感打印

Zest 支援 BLE 熱感打印機用於廚房單據和收據。在 macOS 上,打印機不能在系統設定中配對 — 需要 GATT 存取。

  • 廚房單據 — 食物送到廚房打印機,飲品送到吧台打印機
  • 收據 — 格式化帳單,包含明細、服務費和總計
  • QR 碼打印 — 直接將桌位 QR 碼打印到熱感打印機