Live Board MVP 專案規範
目的
提供多門課程/活動、多個白板、多則公告的即時公佈欄。學員端必須能在不登入的情況下閱讀與複製公告;教師端只供教師登入後管理白板與公告。
主要檔案
index.html:學員端公開頁面。admin.html:教師控制台。src/data.js:Supabase 與本機示範模式資料存取。src/sorting.js:白板排序、置頂與鎖定優先順序。src/board.js:學員端渲染、收摺、複製、QR Code 與同步。src/admin.js:教師登入、公告 CRUD、排序與發布控制。supabase/migrations/:資料表、RLS、Realtime trigger。HANDOFF.md:目前狀態、測試與部署接手資訊。
目前 migration 依序包含基本資料表、兩輪安全性收斂、多白板/排序/鎖定/置頂/稽核紀錄擴充,以及固定 slug 保護。
邊界與安全
- 不在任何前端檔案、文件或提交內容放入
service_role、sb_secret_...、密碼或其他憑證。 - 學員端只可讀取已發布公告;教師寫入權限由 Supabase Auth 與 RLS 控制。
- 公告內容視為「拿到白板網址即可閱讀」的公開資料,不放入敏感個資或機密資料。
- 白板標題可以修改;slug 是固定的公開識別。每則公告以 post ID 形成固定連結。
- 公告本文可以鎖定;鎖定只禁止修改本文,解除鎖定與修改由 Supabase 稽核表記錄。
- Realtime 事件只傳送小型異動通知;長文透過 HTTPS 取得,不把完整內容放進 Realtime payload。
- 不使用外部 CDN、Google Fonts、第三方 iframe 或外部 QR API。
語言與介面
中文介面使用臺灣繁體中文。公告本文是純文字,必須保留換行與空白並以 textContent 渲染,避免將教師貼上的內容當成 HTML 執行。
驗證
每次修改至少執行 npm run build。若有 Supabase 專案,另以測試帳號確認登入、RLS、公告 CRUD、Realtime 更新、草稿不可見與公開白板讀取。發布前需以 Vercel production URL 測試學員端與教師端。
Git 與部署
本專案可作為獨立 GitHub repository,或放在既有 repository 的 work/live-board-mvp。未經本輪明確授權,不執行 commit、push、Supabase migration 實際套用或 Vercel 部署。
1# Live Board MVP 專案規範
3## 目的
5提供多門課程/活動、多個白板、多則公告的即時公佈欄。學員端必須能在不登入的情況下閱讀與複製公告;教師端只供教師登入後管理白板與公告。
7## 主要檔案
9- `index.html`:學員端公開頁面。
10- `admin.html`:教師控制台。
11- `src/data.js`:Supabase 與本機示範模式資料存取。
12- `src/sorting.js`:白板排序、置頂與鎖定優先順序。
13- `src/board.js`:學員端渲染、收摺、複製、QR Code 與同步。
14- `src/admin.js`:教師登入、公告 CRUD、排序與發布控制。
15- `supabase/migrations/`:資料表、RLS、Realtime trigger。
16- `HANDOFF.md`:目前狀態、測試與部署接手資訊。
18目前 migration 依序包含基本資料表、兩輪安全性收斂、多白板/排序/鎖定/置頂/稽核紀錄擴充,以及固定 slug 保護。
20## 邊界與安全
22- 不在任何前端檔案、文件或提交內容放入 `service_role`、`sb_secret_...`、密碼或其他憑證。
23- 學員端只可讀取已發布公告;教師寫入權限由 Supabase Auth 與 RLS 控制。
24- 公告內容視為「拿到白板網址即可閱讀」的公開資料,不放入敏感個資或機密資料。
25- 白板標題可以修改;slug 是固定的公開識別。每則公告以 post ID 形成固定連結。
26- 公告本文可以鎖定;鎖定只禁止修改本文,解除鎖定與修改由 Supabase 稽核表記錄。
27- Realtime 事件只傳送小型異動通知;長文透過 HTTPS 取得,不把完整內容放進 Realtime payload。
28- 不使用外部 CDN、Google Fonts、第三方 iframe 或外部 QR API。
30## 語言與介面
32中文介面使用臺灣繁體中文。公告本文是純文字,必須保留換行與空白並以 `textContent` 渲染,避免將教師貼上的內容當成 HTML 執行。
34## 驗證
36每次修改至少執行 `npm run build`。若有 Supabase 專案,另以測試帳號確認登入、RLS、公告 CRUD、Realtime 更新、草稿不可見與公開白板讀取。發布前需以 Vercel production URL 測試學員端與教師端。
38## Git 與部署
40本專案可作為獨立 GitHub repository,或放在既有 repository 的 `work/live-board-mvp`。未經本輪明確授權,不執行 commit、push、Supabase migration 實際套用或 Vercel 部署。