科技教育創新專區 › 部落格

🍔 #5 校園點餐系統 v3.4.2:Firebase + React 三端分離(顧客 / 廚房 / 叫號)+ 多班級獨立庫存 + OAuth 權限分級

黃凱揚(阿凱老師) · 桃園市龍潭區石門國民小學 · 2026-05-21

#5「校園點餐系統 (Campus Food Order)」v3.4.2 — 基於 Firebase + React 的現代化校園園遊會點餐系統。**三端分離**(顧客點餐 / 廚房管理 / 叫號顯示完全獨立)+ Firestore 即時資料庫 + 多班級獨立庫存(每班一個攤位)+ Firebase Auth Google OAuth 三層權限(owner / staff / none)+ PWA 離線。

校慶園遊會的真實痛點

學校每年校慶 / 園遊會 → 每班一個攤位賣食物:

阿凱的 #5 校園點餐系統 反向:Firebase 即時 + 三端分離 + 多班級獨立庫存。

#5 真實技術細節(v3.4.2)

真實名稱:「校園點餐系統 (Campus Food Order)」

🌟 五大核心特色:

三端分離設計(核心殺手鐧)

顧客點餐 App    廚房管理 App    叫號顯示 App
   /order/        /kitchen        /display/
     ↓              ↓                ↓
       Firebase Firestore 即時同步

5 個路由:

路徑角色用途
/班級選擇顧客選要點餐的班級攤位
/order/:classId顧客點餐指定班級的點餐介面
/kitchen廚房管理接單 / 調庫存(店長可切班級)
/display/:classId叫號顯示大螢幕顯示取餐
/admin管理中心店長班級 + 用戶管理

完整版本演進史

v3.4.2 (2026-03-10):擴充預設品項分類、自訂分類快捷、豐富預設值「一鍵升級舊班級」

v3.0.0 (2026-01-09):多班級獨立庫存系統大改版

v2.0.0 (2026-01-08):

🔐 OAuth 三層權限

角色權限
owner完整權限,可清除資料
staff接單 / 調庫存
none無權限(防止無權人員亂改)

設定流程:

  1. Firebase Console 啟用 Google 登入
  2. 用 Google 帳號登入 /kitchen
  3. 在 Firestore users 集合把 role 改為 owner

真實技術棧

跟「許願池」隱藏作品的關係

#27 swissknife 許願池 文章內提到 swissknife 子站還有:

→ 這是 #5 校園點餐系統 v1.0 早期版本(Google Sites Embedded)。 v3.4.2 GitHub Pages 版 已經把這些子功能合併進三端分離架構。

「從 swissknife 早期版 → cagoooo.github.io/vendor v3.4.2 GitHub 版」 = 阿凱漸進式工具升級的代表案例(跟 #87 PIRLS Pro 從 #4 升級同款邏輯)。

API 端點(Cloud Functions 選用)

端點用途
/getMenu取菜單 + 系統狀態
/getTrending熱銷品項
/placeOrder顧客下單
/getOrders訂單列表
/updateOrderStatus更新狀態
/updateStock更新庫存
/getStats統計資料

教學情境

校慶園遊會(單日 4-6 小時):

多班同時開攤:

期末統計:

配對工具推薦

適用對象

想試試?

→ 前往 #5 校園點餐系統

下次校慶 — 每班一個攤位 + 用 #5 跑 → 不用 cash 不會算錯 + 統計自動。

開源原始碼:參考這個工具做出你的版本

阿凱老師大部分的教育工具都在 GitHub 公開原始碼,歡迎老師、學生與開發者參考改造成適合自己情境的版本。文章頁左下角的「複製 AI 開發提示詞」可把工具資料與原始碼連結一次交給 ChatGPT、Claude、Gemini 等 AI 助手。