

前端作業繳交與自動評測平台。學生上傳 HTML/CSS/JS 或 React 作業,系統在隔離的 Docker 環境中用 Playwright 執行測試,產出分數、測試結果、截圖與 log。

| 服務 | 說明 |
|---|---|
| PostgreSQL | 儲存應用資料與評測工作佇列 |
| MinIO | 儲存作業上傳檔案與評測產物 |
| API | 從此 repository 以 Docker 建置的 Fastify 後端 |
| Web | 從此 repository 以 Docker 建置並由 Nginx 提供的 React SPA |
| Caddy | 對外入口,將 /api/* 導到 API、/img/* 導到 MinIO,其餘導到 Web |
部署完成後可用以下帳號登入:
adminDEFAULT_ADMIN_PASSWORD 設定的值Judge Worker 會輪詢資料庫取得工作,只需要能對外連到 PostgreSQL 與 MinIO,不需要開放任何入站 port。
在 Zeabur Dashboard 開啟 PostgreSQL 服務,到 Instructions 複製 Connection String (external, for Worker)。
在 Zeabur Dashboard 開啟 MinIO 服務,進入 Domains,綁定一個 domain,例如 minio.yourdomain.com,讓它能透過 HTTPS 443 對外提供存取。
git clone <your-repo>
cd frontend-judge
pnpm install
docker build -t judge-runner:latest docker/judge-runner/
pnpm --filter @judge/shared build
pnpm --filter @judge/worker build
export DATABASE_URL='postgresql://root:<password>@hkg1.clusters.zeabur.com:<port>/zeabur'
export MINIO_ENDPOINT='minio.yourdomain.com'
export MINIO_PORT='443'
export MINIO_ACCESS_KEY='minio'
export MINIO_SECRET_KEY='<your-minio-secret>'
export MINIO_USE_SSL='true'
node apps/worker/dist/index.js
Worker 啟動後會連到遠端資料庫,持續輪詢待處理 job,在本機 Docker 執行評測,再把結果與 artifacts 上傳回 MinIO。