Questra 是一个轻量、可自托管的问卷与答题系统。它使用单个 Node.js 服务提供管理后台、公开填写页面和 HTTP API,并使用 SQLite 保存数据,适合个人服务器、内网调研、课程测验和小型团队。
- 题库支持单选、多选、判断、填空和开放文本题,可用分组整理和复用。
- 可以创建普通问卷或自动判分考试,支持手动选题和按题型随机抽题。
- 发布后的题目会保存为快照;以后修改题库不会改变已发布内容和历史成绩。
- 答卷可在后台查看,并导出为 CSV 或 JSON。
- 可通过 HTTP API 和提交钩子接入 Webhook、业务系统或数据平台。
Questra 不依赖 MySQL、Redis 等外部服务,适合单机部署。它不是多节点共享数据库的集群方案。
Questra 需要 Node.js 22 或更高版本。请按使用场景从以下三种方式中选择一种即可。
适合大多数用户:
npm i -g questra@latest
questra -V
第一条命令安装最新正式版本并注册 questra 命令,第二条命令确认安装成功并返回安装版本。
从 GitHub Releases 下载对应版本的 questra-<版本>.tgz,然后在下载目录执行:
npm i -g ./questra-<版本>.tgz
questra -V
将<版本>替换为对应版本号。这种方式安装的是 Release 附件中的固定版本,适合离线保存或部署经过确认的构建产物。
Important
这种方式不会注册全局命令,只能在项目文件夹内通过 npm 或 pnpm 运行;它使用与发布包相同的 CLI 入口,适合开发和调试。
源码开发推荐 pnpm:
git clone https://github.com/Dark2932/Questra.git
cd Questra
pnpm install --frozen-lockfile
pnpm run build
也可以使用 npm:
git clone https://github.com/Dark2932/Questra.git
cd Questra
npm install
npm run install:client
npm run build
全局安装后启动:
questra start
或从源码构建后启动:
pnpm run start
# 或 npm run start
启动成功后,终端会打印访问地址;后台运行时地址也会保留在启动命令的输出中,日志文件记录在运行状态目录。
首次访问会进入欢迎向导。依次创建唯一管理员账户、设置站点名称,然后按以下流程使用:
- 在“题库”中创建题目并按需建立分组。
- 在“问卷”中创建普通问卷或考试,选择题目、计分方式和截止时间。
- 复制
/s/<问卷 ID>公开链接并发送给填写者。 - 在问卷数据页查看答卷、成绩,并导出 CSV 或 JSON。
常用生命周期命令:
questra status
questra restart
questra stop
questra backup
全部全局命令、选项以及源码目录中的 npm/pnpm 脚本见命令参考。
全局安装默认把数据保存在用户目录的 .questra/data,源码构建默认使用仓库 data/;生产环境也可指定独立数据盘。具体路径、环境变量、在线更新和不同平台的部署方式见安装与部署。
- 文档导航:按安装者、管理员和开发者选择阅读路径。
- 安装与部署:三种安装方式、配置、进程托管、升级、备份和排障。
- 介绍与使用:从欢迎向导到题库、问卷、考试、答卷和站点设置。
- 开发与扩展:架构、源码开发、数据库迁移、提交钩子和发布流程。
- HTTP API:鉴权、端点、请求与响应示例。
许可证:MIT License