这是一个基于 Node.js, React 和 PostgreSQL 的业余无线电奖项管理系统。
- ADIF 解析 (JSONB): 自动解析 LoTW 导出的文件,支持动态标签(如 SAT_NAME)。
- 安全防护: 所有 API 请求包含时间戳防重放,支持 Google Authenticator (TOTP) 登录。
- 自定义安装: 首次运行自动进入安装向导。
- 动态后台: 管理员入口路径可配置(默认 /#/admin)。
确保服务器已安装:
- Node.js (v16+)
- PostgreSQL (v12+)
- Minio
创建一个空的 PostgreSQL 数据库:
CREATE DATABASE ham_awards;
在项目根目录运行:
npm install
在项目根目录运行:
npm run build
node server.js
服务默认运行在 http://localhost:3003。
- 打开浏览器访问 http://localhost:3003。
- 界面会自动检测到尚未安装,显示安装向导。
- 填写数据库信息 (Host, User, Pass, DB Name)。
- 设置管理员账号 (Callsign) 和密码。
- 防重放: 请求头必须包含 x-timestamp,服务端校验是否在 5 分钟窗口内。
- 2FA: 用户可在 Dashboard 点击 "Enable 2FA",使用 Authenticator 扫描二维码开启。开启后登录需提供验证码。