AI 智能出题 · 考试模拟 · 章节强弱复练 · 数据复盘 —— 面向个人学习与小组协作的一体化学习平台。 网页端在线使用,Windows 桌面端(Electron)双形态。
Qbao 解决学习中最常见的问题:资料很多、题源很少、练完没有反馈。
网页端与 Windows 桌面端共用同一套前端产物(singlefile),数据经云端同步,多端一致。
从分发页下载最新 Qbao-Setup-*.exe 安装,首次启动按引导填写服务器地址即可使用(自动检查并更新)。
环境要求:Node.js ≥ 18、PostgreSQL ≥ 13、Caddy(线上静态托管与 TLS 终结;自托管可用任意反向代理)。
# 1) 后端
git clone git@github.com:Paraso42/Qbao.git
cd Qbao/server
npm ci
cp .env.example .env # 配置 PGPASSWORD / JWT_SECRET / AI Key
psql -U postgres -d qbao -f init.sql
node scripts/run_migration.js # 版本化迁移(schema_migrations 自动追踪)
npm start # 默认 3000 端口
# 2) 前端(singlefile 构建产物)
cd ../app && npm ci && npm run build
# 将 app/dist/ 发布到服务器静态目录(线上由 Caddy file_server 直出;桌面端内嵌加载同一产物,无需另行部署)
完整部署(Caddy 配置、HTTPS、防火墙、备份、升级)见 docs/DEPLOY.md。
cd server && npm ci --include=dev && npm run dev # 后端 :3000(node --watch)
cd app && npm ci && npm run dev # 前端 Vite HMR
cd desktop && npm ci && npm run dev # Electron 窗口
| 文档 | 内容 |
|---|---|
| docs/ARCHITECTURE.md | 系统架构事实源:HTTPS 链路 / 双环境路由 / 安全边界 / 技术债登记 |
| docs/DEPLOY.md | 部署:Caddy / systemd / 数据库 / 备份 / 升级 |
| docs/PUBLISHING.md | 桌面端发布:双渠道、强制更新、撤回、回滚 |
| docs/DEVELOPMENT.md | 开发工作流、隐私分离规则、诊断脚本 |
| docs/DEVELOPMENT_FLOW.md | 发布流程唯一事实源 + DoD 检核表 |
| docs/MOBILE_UX.md | 移动端交互规范与真机验收清单 |
| docs/ENVIRONMENTS.md | 环境与网络地图:L0/L1/L2 隔离、内测入口与 FAQ |
| docs/REVIEW-2026-09.md | 项目全貌与专业点评(2026-09) |
| docs/LICENSING.md | 许可与边界说明:自研代码 / 第三方 MIT 组件 / 弹猪乐个人授权 |
| CONTRIBUTING.md / SECURITY.md | 贡献指南(含贡献许可条款)/ 安全政策 |
Qbao/
├── app/ # 前端 SPA:Vue 3 + Vite + Pinia(源码 src/,singlefile 产物 dist/)
├── desktop/ # Electron 桌面壳(main / preload / updater,Windows NSIS 打包)
├── server/ # Node.js 后端:Express + PostgreSQL
│ ├── src/ # 路由、鉴权中间件、AI Provider 适配器、服务层
│ ├── sql/ # 版本化数据库迁移(NNN_*.sql,schema_migrations 追踪)
│ ├── scripts/ # 迁移执行 / 管理员引导 / 诊断脚本
│ ├── deploy/ # systemd 单元 + 上传目录初始化脚本
│ └── init.sql # 建库脚本
├── docs/ # 架构 / 部署 / 发布 / 开发文档
├── mobile/ # Capacitor 手机壳工程(Android / iOS,加载线上站点)
├── party/ # 联机游戏后端源码(werewolf 狼人杀,systemd qbao-werewolf)
├── scripts/ # 发布与部署工具(stage 双环境部署 / publish-installer manifest 入库)
├── tools/ # 一次性维护脚本(默认不上传)
└── local/ # 【本地专用】密钥 / 日志 / 备份快照,永不上传(.gitignore)
Vue 3 + Vite + Pinia 前端(singlefile 产物,网页 / Electron 双形态共用,手机壳 App 同源加载)+ Node.js / Express 后端(17 个路由模块)+ PostgreSQL(业务状态 JSONB + rev 乐观锁同步;会话 / 聊天 / 工单 / 积分 / 游戏等独立关系表)。
关键设计:
在线服务由单台香港服务器直接提供(域名为占位符;真实域名/IP/路径只保存在本机 gitignored 文档,占位符纪律见 docs/DEVELOPMENT.md):
用户(浏览器 / 手机壳 App / 桌面端)
│ https://{DOMAIN}(DNS → Cloudflare 代理) https://{BETA_HOST}(内测 · DNS 仅解析直连)
▼ ▼
单台服务器 {HK_IP} · Caddy(TLS 终结 · Let's Encrypt 自动证书 · gzip)
├─ 静态本地直出(file_server + SPA 兜底):生产 {HOST_ROOT}/qbao/app(7 天缓存)
│ 内测 {HOST_ROOT}/qbao-beta/app(不缓存)
├─ /api /uploads /avatars /dl → 生产 Node :3000 → PostgreSQL 库 qbao
│ 内测 Node :3100 → 库 qbao_beta
└─ /games/werewolf/{api,werewolf-ws} → Node :3011(房间内存态,两环境共享)
git pull;文件内容与重写前逐字节一致,仅提交 SHA 变化本项目的 AI 能力(资料→题目生成、服务端出题任务队列、AI 二次自检、多模态视觉设计评审)默认且深度适配华东师范大学人工智能公共服务平台(ChatECNU,https://chat.ecnu.edu.cn/open/api/v1,ecnu-plus / ecnu-max / ecnu-turbo);项目自身的开发过程——代码编写与重构、测试用例补全、线上故障定位、文档与发布工具打磨——同样依托该平台的大模型完成。谨此致谢:
本研究工作得到华东师范大学人工智能公共服务平台(ChatECNU)支持。
This work was supported by ChatECNU, the AI Service Platform of East China Normal University.
上述声明为本项目对外成果(论文、软件著作权、数据集、开源 Release、对外报告)的统一署名口径,逐字照抄学校《致谢声明模板》;在线服务(网页)与客户端(桌面端 / 手机端)内部的致谢展示将随后续版本加入。
本项目采用 PolyForm Noncommercial License 1.0.0(SPDX:PolyForm-Noncommercial-1.0.0)——源码公开,但禁止商业使用。
✅ 允许(免费、无需申请)
❌ 禁止(须事先取得书面授权)
📩 商业授权:如需商业使用,请通过 GitHub Issues 联系作者洽谈授权。
第三方组件例外:仓库内游戏空间(
app/public/games/)的移植作品与party/werewolf/保持其上游原始许可证(多为 MIT),不受本项目非商业条款约束;app/public/games/marble/为作者个人授权引入。各组件许可与适用范围详见 docs/LICENSING.md。