Skip to content

小木问卷 - 问卷调查 | 在线投票 - 基于Nestjs与React的问卷生成系统

License

Notifications You must be signed in to change notification settings

indulgeback/react-questionnaire

Repository files navigation

🌟 小木问卷 (React Questionnaire)

React NestJS NextJS TypeScript License: MIT Lottie Ant Design HeroUI TailwindCSS pnpm Vite

📝 介绍

小木问卷 - 基于 NestJS 的问卷生成系统

🛠️ 技术栈

  • 前端(PC 端前台) :React18
  • 前端(移动端前台) :NextJS
  • 后端 :NestJS
  • 数据库 :MySQL + MongoDB + Redis
  • AI 模型 :DeepSeek Chat
  • 动画库 :GSAP + lottie web
  • UI 库 :Ant Design + HeroUI + TailwindCSS
  • 前端构建工具 :Vite + SWC
  • 包管理器 :pnpm
  • 版本管理 :Lerna
  • 代码规范 :ESLint + Prettier
  • 提交规范 :Husky + Commitlint
  • 单元测试 :Jest
  • 开源协议 :MIT

✨ 功能特性

  • 🎯 问卷编辑器 :拖拽式问卷设计器,支持组件拖拽、配置和预览
  • 🤖 智能推荐 :基于DeepSeek Chat模型的智能问卷推荐
  • 🧩 组件配置 :丰富的问卷组件配置选项,包括:
    • 📋 标题组件配置
    • 📄 段落组件配置
    • ✏️ 简答题组件配置
    • 🔘 单选题组件配置
    • ☑️ 多选题组件配置
    • 📊 NPS评分题组件配置
    • ⭐ 评分(星级)组件配置
    • 📅 日期选择组件配置
    • 📝 下拉选择组件配置
  • 👁️ 实时预览 :编辑过程中实时预览问卷效果
  • 📱 响应式设计 :同时支持PC端和移动端
  • 📈 数据分析 :问卷结果统计和可视化分析

🏗️ 软件架构

  • 📂 目录树:查看 /doc/structure-tree.txt
  • 📚 API 接口文档地址:查看 /doc/apifox接口文档.txt
  • 🔍 架构图:查看 /doc/小木问卷软件架构图.pdf
  • 💾 ER 图:查看 /doc/ER.dio

🚀 安装教程

# 在根目录使用 pnpm 安装依赖
pnpm i

📋 使用说明

⚠️ 注:mac 或 linux 用户使用 husky 脚本时,请赋予执行权限

# 为 .husky 文件夹下的所有脚本添加执行权限
chmod +x .husky/*

项目脚本

项目 node 脚本 scripts 如下:

"scripts": {
    "dev:fe": "pnpm -F @questionnaire/fe dev",                // 前端服务开发模式
    "dev:client": "pnpm -F @questionnaire/client dev",        // 移动端前端服务开发模式
    "dev:be": "pnpm -F @questionnaire/be start:dev",          // 后端服务开发模式
    "generate-tree": "npx treer -e ./doc/structure-tree.txt -i \"/node_modules|.git|dist|.next|logs/\"",  // 生成目录树
    "prepare": "husky install",                               // 预装 husky
    "version": "npx lerna version --conventional-commits --no-git-tag-version --force-publish=*",  // 发布版本号
    "postversion": "node scripts/postVersion.js",             // 发布版本号后,自动打 tag
    "lint": "pnpm -F @questionnaire/fe lint && pnpm -F @questionnaire/be lint",  // eslint 校验
    "format": "pnpm -F @questionnaire/fe format && pnpm -F @questionnaire/be format",  // prettier 格式化代码
    "stat": "cloc --include-lang=JavaScript,TypeScript,SCSS,CSS,Markdown --exclude-dir='node_modules,dist,build,.next' .",  // 统计代码行数
    "build:docker-compose:dev": "docker-compose down && docker-compose up --build -d",  // 构建docker-compose
    "build:docker-images-and-push-to-registry": "node scripts/buildAndPushImageWithLernaVersion.js"  // 构建docker镜像并推送到镜像仓库
}

🐳 容器化部署

如需在本地或云服务器上部署,请复制根目录下 /docker/docker-compose.yml 配置文件到服务器,并修改相关配置(如 MySQL 密码等),然后执行 docker-compose up -d。未暴露的环境变量可在前后端项目的配置文件中自行修改,并将镜像推送到自己的仓库,记得修改相关的镜像配置。


🤝 参与贡献

About

小木问卷 - 问卷调查 | 在线投票 - 基于Nestjs与React的问卷生成系统

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published