# 义工时长管理系统 ## 功能概述 - **管理台**:活动设置、义工时长登记、用户管理、数据导出(表格/图片) - **用户端**:输入姓名查询个人参与活动及累计义工时长 - **响应式**:同时适配移动设备与 PC 端 ## 技术栈 - 前端:React 18 + Vite 5 + TypeScript + TailwindCSS 3 - 后端:Node.js + Express + TypeScript - 数据库:SQLite 3 (better-sqlite3) - 部署:Docker + Gitea Actions 自动部署 - 域名:https://volunteer.bzw-hheb.top ## 初始管理员账号 - 用户名:`admin` - 密码:`admin123` 首次登录后请立即修改密码。 ## 本地开发 ```bash # 安装后端依赖 cd server && npm install # 安装前端依赖 cd ../client && npm install # 启动后端(端口 3001) cd server && npm run dev # 启动前端(端口 5173,代理 /api 到 3001) cd client && npm run dev ``` ## Docker 本地运行 ```bash docker compose up -d --build ``` 访问 http://localhost:3000 ## 部署配置(Gitea Secrets) 在仓库 Settings -> Secrets 中配置: | 名称 | 说明 | |------|------| | `SSH_HOST` | 服务器 IP/域名 | | `SSH_PORT` | SSH 端口(默认 22) | | `SSH_USER` | SSH 用户名 | | `SSH_PRIVATE_KEY` | SSH 私钥(对应服务器上的公钥需加入 authorized_keys) | ## 数据持久化 SQLite 数据库文件位于容器 `/app/server/data/volunteer.db`,docker-compose.yml 中已配置为 bind mount 到 `./server/data`。