- 🔍 進階搜尋: 支援關鍵字、系所、教師、學分數搜尋
- 採用前端索引式搜尋引擎 (
search-engine.ts),整合系所縮寫/全名映射
- 採用前端索引式搜尋引擎 (
- 📅 課表預覽: 即時課表預覽和衝堂檢查
- 🤖 自動更新: 透過 GitHub Actions 每日爬蟲 + 部署(純靜態 JSON + 前端本地快取)
網站每日由 GitHub Actions 爬取並重新部署(若資料有變更才提交),前端使用 localStorage 版本化快取減少重複載入:
- 搜尋課程: 在搜尋框輸入關鍵字(課程名稱、教師、系所等)
- 篩選條件: 使用下拉選單篩選系所、學制、學分數等
- 加入課表: 點擊「加入課表」按鈕將課程加入個人課表
- 檢視課表: 右側即時顯示課表並自動檢查衝堂
- 移除課程: 在課表中點擊課程可移除
- 關鍵字搜尋: 課程名稱、教師姓名
- 系所篩選: 依開課系所分類
- 學制篩選: 學士班、碩士班、博士班等
- 學分篩選: 依學分數篩選
- 時間篩選: 依上課時間篩選
- 縮寫/別名自動展開(例如「資工」= 資訊工程學系、「應數」= 應用數學系)
- 排程時間: 每天台灣時間 06:00(GitHub Actions cron)
- 資料來源: 中興大學課程查詢系統
- 更新策略: 若 JSON 有差異才 commit + 部署;前端以
COURSE_DATA_VERSION控制本地快取失效 - 涵蓋範圍: 學士班 / 碩士班 / 博士班 / 進修部 / 在職專班 / 通識與體育
- 框架: Next.js 15 + React 19
- 樣式: Tailwind CSS
- 語言: TypeScript
- 部署: GitHub Pages (靜態網站)
- 語言: Python 3.11 (
course_crawler.py) - 自動化: GitHub Actions(
update-courses.yml) - 快取策略: 前端 localStorage +
COURSE_DATA_VERSION
Course_Selector/
├── course_crawler.py # Python 爬蟲程式
├── .github/workflows/ # GitHub Actions 設定
│ └── update-courses.yml # 自動更新工作流程
└── course-helper-web/ # 前端網站
├── public/data/ # 課程 JSON 資料
├── src/ # 原始碼
└── out/ # 建置輸出 (自動生成)
歡迎提交 Issue 和 Pull Request!
- Fork 此專案
- 建立功能分支 (
git checkout -b feature/amazing-feature) - 提交變更 (
git commit -m 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 開啟 Pull Request
此專案採用 MIT 授權條款 - 詳見 LICENSE 檔案
- 本工具僅供參考,實際選課請以學校教務系統為準
如有問題或建議,歡迎透過以下方式聯繫:
- 🐛 Issue: GitHub Issues
🎓 祝您選課順利!