基于 NestJS + Vue3 + Prisma 的企业级全栈应用基础模板。采用 Monorepo 架构,提供纯净的后台管理系统底座,内置完善的 RBAC 权限体系和 Docker 一键部署能力,摒弃多余业务代码,开箱即用。
- ✅ 完整 RBAC 体系:用户、角色、权限、菜单的深度关联。
- ✅ 细粒度控制:支持按钮级/API 级的操作权限控制。
- ✅ 动态路由:基于后端菜单数据动态生成前端路由。
- ✅ JWT 认证:标准的 Access Token + Refresh Token 机制。
- ✅ 用户管理:账户增删改查、角色分配。
- ✅ 角色管理:角色创建、权限分配、菜单分配。
- ✅ 菜单管理:可视化配置系统菜单和路由。
- ✅ 字典管理:通用数据字典配置(如性别、状态等)。
- ✅ 日志系统:操作日志与登录日志记录。
- ✅ 仪表盘:系统运行状态概览。
- ✅ Monorepo:前后端统一管理,类型共享。
- ✅ Prisma ORM:类型安全的数据库访问。
- ✅ Docker 化:提供完整的 Docker Compose 编排,一键启动全栈环境。
- ✅ API 标准化:统一响应格式、全局异常处理、Swagger 文档。
如果您只想快速预览或部署项目:
# 构建并启动所有服务(前端 + 后端 + 数据库)
docker-compose up --build启动后访问:
- 前端页面: http://localhost
- API 文档: http://localhost:3000/api-docs
如果您需要修改代码,建议使用开发模式:
- Node.js >= 18.x
- pnpm >= 8.x
- PostgreSQL >= 14.x (或使用 Docker 启动 db 服务)
pnpm install复制 .env.example 为 .env 并配置数据库连接:
cp apps/backend/.env.example apps/backend/.env# 生成 Prisma Client
pnpm prisma:generate
# 推送数据库结构
pnpm prisma:migrate
# 填充初始数据(管理员账户 & 基础字典)
pnpm prisma:seed# 启动后端 (Port: 9423)
pnpm dev:backend
# 启动前端 (Port: 5173)
pnpm dev:frontend
# 启动移动端 H5 (Port: 9000)
pnpm dev:mobilePOST /api/auth/login- 登录POST /api/auth/register- 注册GET /api/auth/profile- 获取个人信息
GET /api/users- 用户列表GET /api/users/:id/roles- 用户角色POST /api/users- 创建用户
GET /api/roles- 角色列表POST /api/roles/:id/menus- 分配菜单POST /api/roles/:id/permissions- 分配权限
GET /api/menus/tree- 菜单树GET /api/menus/user-routes- 当前用户路由
GET /api/dictionaries- 字典列表POST /api/dictionaries/:id/items- 添加字典项
nestbase/
├── apps/
│ ├── backend/ # NestJS 后端 (Port: 9423)
│ │ ├── Dockerfile # 后端镜像构建配置
│ │ └── ...
│ ├── frontend/ # Vue3 前端 (Port: 5173)
│ │ ├── Dockerfile # 前端镜像构建配置
│ │ └── nginx.conf # 前端 Nginx 配置
│ └── mobile/ # UniApp 移动端 (NestBase Mobile)
├── docker-compose.yml # 全栈服务编排
├── package.json # 根配置
└── ...
欢迎提交 Issue 或 Pull Request。
MIT License