一份自托管的备考题库:练习、模拟考试、错题重做、收藏、笔记、快速背题,数据全部存在本地 SQLite,单用户使用。
client/ React 前端(src/pages 按页面、src/components 复用组件、src/api.js 全部接口封装)
server/ Express 后端(src/routes 按资源分路由、src/middleware 鉴权、src/test 单元测试)
data/ SQLite 运行数据(已 gitignore,勿提交)
docs/ API 文档
answerhub-skill/ Agent 技能:通过 REST API 管理题库(增删改查)
需要 Node.js 22+。先装依赖:
npm install --prefix server
npm install --prefix client
两个终端分别启动:
npm run dev:server # Express,默认 http://localhost:6060
npm run dev:client # Vite,默认 http://localhost:5173(/api 已代理到 6060)
浏览器打开 http://localhost:5173 ,首次登录默认密码 answerhub(新装库自动生成),登录后到 Settings → 密码 修改。
npm run build # 构建前端并复制到 server/public
npm start # 由 Express 同时提供 API 与前端静态资源,默认端口 6060
环境变量:
| 变量 | 说明 | 默认 |
|---|---|---|
PORT | 服务端口 | 6060 |
DB_PATH | SQLite 文件路径 | data/answerhub.db |
COOKIE_SECURE | 设为 1 时会话 cookie 仅走 HTTPS(HTTPS 部署建议开启) | 未设置 |
生产部署推荐使用 Docker。镜像已发布到 Docker Hub(iwmu/answerhub,支持 amd64/arm64),仓库根目录自带 docker-compose.yml:
services:
answerhub:
image: iwmu/answerhub:latest
container_name: answerhub
ports:
- "6060:6060"
volumes:
- ./data:/app/data
restart: unless-stopped
启动:
docker compose up -d # 默认映射 6060 端口,数据持久化到 ./data
等价于:
docker run -d -p 6060:6060 -v ./data:/app/data iwmu/answerhub:latest
镜像由 GitHub Actions 自动构建:推送 main 更新 latest 标签,打 v* tag 额外发布对应版本号。
data/answerhub.db(WAL 模式),该目录已 gitignore。data/answerhub.db(备份前建议在页面内下载备份,WAL 数据更完整)。settings.password_hash),旧明文会在启动时自动迁移并删除。COOKIE_SECURE=1。cd server && npm test # vitest:计分逻辑 + 工具函数
cd client && npm run lint # ESLint
cd client && npm run format # Prettier 格式化
answerhub-skill/ 是一个 Agent Skill,让 AI 助手通过 REST API 直接管理题库:查询、新增、修改、删除专业/科目/题目,以及错题、收藏、笔记等。
使用步骤:
Settings → APIexport ANSWERHUB_KEY=<你的key>
export ANSWERHUB_BASE=http://localhost:6060 # 远程部署时改为对应地址
answerhub-skill/scripts/ah.sh GET /professions # 查询专业
answerhub-skill/scripts/ah.sh GET "/subjects/1/questions?keyword=投资" # 搜索题目
answerhub-skill/scripts/ah.sh PUT /questions/5 '{"answer":"B"}' # 修改题目
answerhub-skill/scripts/ah.sh DELETE /questions/5 # 删除题目
删除专业/科目会级联删除其下所有题目,操作前请确认。完整接口见 API 文档。
Content type
Image
Digest
sha256:f572627d4…
Size
76 MB
Last updated
3 months ago
docker pull iwmu/answerhub