feat: 初始化义工时长管理系统

- 管理台:活动设置、时长登记、用户管理、数据导出(Excel/PNG)
- 用户端:姓名查询个人义工时长与活动记录
- 技术栈:React + Vite + TailwindCSS / Node.js + Express + sql.js (SQLite)
- 支持 Docker 部署,附带 Gitea Actions 自动部署工作流
- 响应式界面,兼容移动端与 PC 端
- 默认管理员账号:admin / admin123
This commit is contained in:
Trae Assistant
2026-10-04 18:06:24 +08:00
commit 25b2b8f381
50 changed files with 7918 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
# 义工时长管理系统
## 功能概述
- **管理台**:活动设置、义工时长登记、用户管理、数据导出(表格/图片)
- **用户端**:输入姓名查询个人参与活动及累计义工时长
- **响应式**:同时适配移动设备与 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`。