Qbao

Qbao — 全能互动学习做题引擎

AI 智能出题 · 考试模拟 · 章节强弱复练 · 数据复盘 —— 面向个人学习与小组协作的一体化学习平台。 网页端在线使用,Windows 桌面端(Electron)双形态。

License: PolyForm Noncommercial 1.0.0 Frontend Backend DB Desktop Release

项目简介

Qbao 解决学习中最常见的问题:资料很多、题源很少、练完没有反馈。

网页端与 Windows 桌面端共用同一套前端产物(singlefile),数据经云端同步,多端一致。

核心特性

🧠 学习闭环

🤖 AI 能力

🔄 数据与同步

👥 协作与平台

🎮 游戏空间

💻 形态与分发

快速开始

桌面端

从分发页下载最新 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 乐观锁同步;会话 / 聊天 / 工单 / 积分 / 游戏等独立关系表)。

关键设计:

公网部署架构(HTTPS 链路 · 简述)

在线服务由单台香港服务器直接提供(域名为占位符;真实域名/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(房间内存态,两环境共享)

隐私与安全

平台支持与致谢

本项目的 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。