SKILLEX

prayer168 / science-portal

science-portal

互動式數位教材中心建置技能。當使用者想要建立一個收錄多個互動教材連結的網站, 並具備分類管理、Firebase 雲端同步、Google 帳號後台登入等功能時,使用本技能。 觸發條件:使用者提到「教材網站」、「教材中心」、「學科入口網站」、 「Firebase 教材管理」、「互動教材清單」或要求建立帶有後台管理的靜態教學網站。

目標

產生一個單一 HTML 檔案的互動教材入口網站,具備:

  • 多類別分頁瀏覽(可自訂類別與顏色)
  • 卡片式教材清單,點擊直接開啟教材
  • Firebase Google 帳號登入的後台管理介面
  • Firestore 雲端同步(跨裝置資料一致)
  • 教材的新增、刪除、移動類別、重新命名
  • 批次操作(勾選多筆刪除或移動)
  • 自訂類別(新增 / 刪除 / 重新命名)
  • 資料匯出(複製 JSON 備份)

---

技術架構

層次技術
前端框架純 HTML + CSS + Vanilla JS(無框架依賴)
字體Google Fonts:Nunito(英文標題)、Noto Sans TC(中文)
認證Firebase Authentication(Google Sign-In)
資料庫Firebase Firestore(portal/v1 單一文件存全部資料)
部署GitHub Pages(單一 index.html
快取localStorage 作為離線 / 初次載入快取

---

資料模型

Firestore 文件路徑:portal/v1

{
  "materials": [
    { "cat": "三年級", "name": "打雷示範動畫", "url": "https://...", "icon": "⚡" }
  ],
  "customCats": [
    { "key": "自訂類別", "emoji": "🔭", "desc": "說明文字", "color": "#6c5ce7", "custom": true }
  ]
}

預設類別(鎖定,不可刪除):三年級、四年級、五年級、六年級、教學應用、休閒(動動腦)

---

Firestore 安全規則

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read:  if true;
      allow write: if request.auth != null
                   && request.auth.token.email == "管理員email@gmail.com";
    }
  }
}

---

HTML 架構

skill.md