创建、发布问卷,回收统计信息。
- Monorepo 架构设计
- 采用
pnpm workspace管理的 monorepo 架构 - 清晰的包结构:
apps/*和packages/* - 统一的依赖管理和构建流程
- 现代化技术栈
- 前端:React 19 + TypeScript + Vite/Next.js
- 后端:NestJS 11 + TypeScript
- 数据库:MySQL + Drizzle ORM
- 状态管理:Zustand
- UI 组件库:Ant Design 5
- 组件化设计系统
- 高度模块化的问卷组件架构
- 支持多种题型:标题、单选、多选、输入框、文本域、段落等
- 每个组件都有独立的接口定义和属性配置
- 组件可配置、可复用
- 状态管理优化
- 使用 Zustand 进行轻量级状态管理
- 组件状态与问卷状态分离
- 支持组件的增删改查、拖拽排序
- 临时 ID 机制处理未保存状态
- 数据库设计
- 使用 Drizzle ORM 进行类型安全的数据库操作
- 自定义 ID 生成器(基于 cuid2)
- 清晰的数据库模式定义
- 开发体验优化
- 代码质量:ESLint + Prettier + TypeScript
- Git 钩子:pre-commit 自动代码检查
- 热重载:支持前端和后端的开发模式热重载
- 并发开发:一键启动所有服务
- 部署和运维
- Docker 支持:完整的容器化部署方案
- 多环境配置:开发、生产环境配置分离
- 服务编排:MySQL、Redis、MinIO 等服务的统一管理
- API 设计
- RESTful API 设计
- Swagger 文档自动生成
- 统一的响应格式和异常处理
- 请求参数验证和转换
- 文件存储
- MinIO 对象存储服务
- 支持图片上传和管理
- 问卷背景和页眉图片功能
- 性能优化
- Next.js 的 Turbo 模式
- React 19 的新特性支持
- 组件懒加载和按需渲染
这是一个企业级的问卷管理系统,具有以下特色:
- 响应式设计:支持多端适配
- 实时预览:编辑和预览同步
- 组件库扩展:易于添加新的题型组件
- 数据统计:问卷填写数据的可视化分析
修改了 schema 结构后需要执行 pnpm run db:init