面向线下活动的报名、签到、渠道二维码、飞书多维表格同步和数据复盘工作台。项目使用 Next.js 16、React 19 和 MongoDB。
- 活动创建、复制、报名截止与签到截止时间
- 可编辑的动态报名表与拖拽排序
- 公开报名、扫码签到与渠道预设二维码
- 报名用户管理、批量签到和数据导出
- 飞书 Base 字段与线索双向同步
- 管理员角色、操作日志和活动数据看板
npm ci
npm run dev -- --hostname 0.0.0.0打开 http://localhost:3000/setup。首次运行时,系统会在服务端日志输出 QIANDAO_SETUP_TOKEN。配置页只需填写 MongoDB 连接串和该部署令牌。
系统会从连接串路径读取数据库名;未指定时默认使用 checkin_station,并自动识别空数据库或已有数据库:
- 使用 root 或其他数据库管理员连接时,自动创建仅拥有目标数据库
readWrite权限的随机应用账号,只保存受限连接串。 - 使用目标数据库的
readWrite连接时,直接保存该连接串。 - 自动创建必要索引;空数据库会创建
admin超级管理员,并在配置完成页一次性展示随机初始密码。 - 已有数据库会保留原管理员数据,并直接跳转登录页。
系统会生成新的运行认证密钥。已有数据库中的飞书 App Secret 如由其他实例加密,需要登录后在系统设置中重新填写。
在发布前完成构建:
npm ci
npm run build
chmod +x entrypoint.shSealos 的 Entry Point 填写:
./entrypoint.sh
entrypoint.sh 只启动已构建产物,不会在容器启动时重新构建。
请为运行目录挂载持久化存储,或通过 QIANDAO_DATA_DIR 指向持久化卷。该目录保存数据库连接和会话密钥,必须仅对应用进程可读。
- 不要把
.env.local、data/runtime-config.json或任何真实凭证提交到 Git。 - 公网非 TLS MongoDB 可以完成配置,但页面会显示安全警告;生产环境优先使用 Sealos 集群内网 Service 地址或启用 TLS。
- 建议在部署平台密钥管理中设置
SETUP_TOKEN。未设置时,系统会自动生成并输出到服务日志。 - 完成配置后,部署令牌文件会自动删除。
- 飞书 App Secret 使用 AES-256-GCM 加密保存,不会从管理接口回显。
| 变量 | 用途 |
|---|---|
QIANDAO_DATA_DIR |
运行配置和初始化令牌目录,默认为 ./data |
SETUP_TOKEN |
首次配置的部署令牌,至少 16 位 |
MONGODB_URI |
非交互式部署的 MongoDB URI |
MONGODB_DB |
非交互式部署的数据库名称 |
AUTH_SECRET |
非交互式部署的会话与凭证加密密钥,至少 32 位 |
如果使用环境变量跳过 /setup,必须同时配置 MONGODB_URI 和 AUTH_SECRET,并将它们保存在部署平台的 Secret 管理中。
npm run dev # 开发服务
npm run build # 生产构建
npm run start # 启动生产服务