Skip to main content
本專案以 Next.js 15(App Router)、React 19 和 Tailwind CSS 為基礎,使用 TypeScript 撰寫。開始開發前,請先依照快速開始完成本機設定。

常用指令

提交變更前,建議依序執行測試、程式碼檢查、型別檢查和正式版建置。

測試

npm test 會執行 tests/api.test.ts 和 tests/i18n.test.ts。api.test.ts 會匯入其餘的測試檔案,因此一個指令就能執行全部測試。偵錯時,也可以用 tsx 單獨執行某個檔案:

專案結構

新增介面文案

文案定義在 app/i18n/messages.ts 中。簡體中文原文就是鍵,其他三種語言則是值:
app/i18n/messages.ts
在元件中透過 t("历史记录") 使用。新增文案時,請同時提供 zh-TW、en 和 ko 三種翻譯,i18n.test.ts 會檢查完整性。

持續整合

.github/workflows/docker.yml 會在推送到任何分支、推送 v* 標籤、提交 Pull Request 或手動觸發時執行:
1

驗證

使用 Node.js 22 依序執行 npm ci、npm test、npm run lint 和 npm run build。
2

建置映像檔

驗證通過後建置 Docker 映像檔。一般分支和 Pull Request 只建置 linux/amd64,用來檢查映像檔能否成功建置。
3

發布映像檔

推送到預設分支、howendev/dev 分支或任何標籤時,會同時建置 linux/amd64 和 linux/arm64,並在設定了 Docker Hub secrets 時推送多架構映像檔。

映像檔標籤

Docker Hub secrets

在 GitHub 儲存庫中開啟 Settings → Secrets and variables → Actions,新增: 未設定這兩個 secrets 時,工作流程只會建置映像檔而不推送,並輸出一則警告。
不要把執行階段的金鑰寫入 Docker 映像檔。DEEPSEEK_API_KEY、GEMINI_API_KEY、CODE 和 Umami 設定應在執行容器時,透過 .env.production 或 -e 參數注入。

Docker 映像檔

Dockerfile 以 node:22-alpine 進行多階段建置,並使用 Next.js standalone 輸出:
  • 執行階段以非 root 使用者 nextjs 執行。
  • 預設監聽 0.0.0.0:3002。
  • 映像檔包含 LICENSE、NOTICE、LICENSING.md 和 LICENSES/ 授權檔案。

貢獻

歡迎提交 Issue 和 Pull Request。新的貢獻請使用與 AGPL-3.0-only 相容的授權,並保留所引入第三方程式碼的聲明。詳見授權條款。