Skip to content

基于 NestJS 和 CQRS 的后台管理系统脚手架,融合 DDD 驱动设计和 NestJS monorepo 结构,内置基础权限管理。为开发者提供一个灵活、模块化的起点,助力构建基础的管理系统。

License

Notifications You must be signed in to change notification settings

soybeanjs/soybean-admin-nestjs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b0ed80a · Apr 17, 2025
Oct 23, 2024
Apr 10, 2025
Oct 16, 2024
Apr 17, 2025
May 14, 2024
May 13, 2024
Oct 11, 2024
May 11, 2024
Dec 6, 2024
Oct 12, 2024

Repository files navigation

SoybeanAdmin NestJS

license stars forks issues

在线预览

注意:由于数据库(PostgreSQL)和缓存(Redis)部署在Vercel上,访问可能需要科学上网工具。如果遇到访问缓慢或者无法访问问题,建议使用本地部署方式进行体验。

简介特性项目结构快速开始技术栈贡献指南许可证

简介

SoybeanAdmin NestJS 是一个基于 NestJS 的后台管理系统脚手架,采用 monorepo 结构设计。它为开发者提供了一个灵活、模块化的起点,内置基础的权限管理功能,旨在帮助快速构建高质量的企业级管理系统。

本项目的后端基于 NestJS 框架,提供了多种架构模式供选择,包括传统的 MVC 模式(在 base-demo 中展示)以及更高级的 CQRS 和 DDD 设计模式(在 base-system 中实现)。它集成了 Prisma ORM 用于数据库操作,为开发提供了极大的便利。

前端采用了最新的技术栈,包括 Vue3、Vite5、TypeScript、Pinia 和 UnoCSS,结合了丰富的主题配置和组件。

无论您是要开发一个小型的管理后台,还是构建 CMS 等企业应用,SoybeanAdmin NestJS 都能为您提供一个坚实的起点和高效的开发体验。本项目提供了灵活可扩展的基础,您可以根据自己的需求和偏好进行定制和扩展。

值得注意的是,虽然项目中包含了CQRS和DDD设计的示例,但这并不是强制性的。在 base-demo 目录中,我们展示了如何根据个人喜好和业务需求来组织代码结构。您可以完全按照自己的业务规范来使用这个脚手架,不必严格遵循CQRS或DDD的模式。这种灵活性使得SoybeanAdmin NestJS 能够适应各种不同的开发风格和项目需求。

特性

  • 模块化设计:采用 NestJS 的模块系统,实现高内聚、低耦合的代码组织。
  • 多种架构模式:支持传统 MVC、CQRS 和 DDD 设计模式,满足不同复杂度的项目需求。
  • Monorepo 结构:便于管理多个相关的项目和共享代码。
  • Prisma ORM:提供类型安全的数据库操作。
  • 自动化路由:简化 API 端点的管理。
  • 权限管理:内置基于角色的访问控制(RBAC)系统。
  • JWT 认证:安全的用户认证和授权机制。
  • API 文档:自动生成 Swagger API 文档。
  • 环境配置:支持多环境配置。
  • 前端技术栈:Vue3、Vite5、TypeScript、Pinia 和 UnoCSS。
  • 主题定制:丰富的主题配置选项。
  • 国际化支持:轻松实现多语言支持。

项目结构

soybean-admin-nestjs/
├── backend/                 # 后端代码
│   ├── .http/               # HTTP 请求文件
│   ├── apps/                # 应用模块
│   │   ├── base-demo/       # 基础演示模块(MVC 模式)
│   │   └── base-system/     # 基础系统模块(CQRS/DDD 模式)
│   │       └── src/
│   │           ├── api/     # API 接口
│   │           ├── infra/   # 基础设施
│   │           ├── lib/     # 领域模块
│   │           └── resources/ # 资源文件
│   ├── dist/                # 编译输出目录
│   ├── libs/                # 共享库
│   │   ├── bootstrap/       # 启动模块
│   │   ├── config/          # 配置模块
│   │   ├── constants/       # 常量定义
│   │   ├── global/          # 全局模块
│   │   ├── infra/           # 基础设施
│   │   │   ├── adapter/     # 适配器
│   │   │   ├── decorators/  # 装饰器
│   │   │   ├── filters/     # 过滤器
│   │   │   ├── guard/       # 守卫
│   │   │   ├── interceptors/# 拦截器
│   │   │   ├── rest/        # REST 相关
│   │   │   └── strategies/  # 策略
│   │   ├── shared/          # 共享模块
│   │   │   ├── errors/      # 错误处理
│   │   │   ├── ip2region/   # IP 地址转换
│   │   │   ├── oss/         # 对象存储
│   │   │   ├── prisma/      # Prisma 相关
│   │   │   └── redis/       # Redis 相关
│   │   ├── typings/         # 类型定义
│   │   └── utils/           # 工具函数
│   ├── node_modules/        # 依赖包
│   └── prisma/              # Prisma 配置和迁移
├── frontend/                # 前端代码
└── README.md                # 项目说明文档

快速开始

环境要求

  • Node.js: 18.x.x 或更高版本
  • PostgreSQL: 13.x 或更高版本
  • Redis: 6.x 或更高版本
  • pnpm: 8.x.x 或更高版本
  • Docker (推荐): 20.x.x 或更高版本

快速开始(推荐方式)

使用 Docker Compose 一键启动所有服务(包含 PostgreSQL、Redis 等依赖):

docker-compose -p soybean-admin-nest up -d

启动后即可访问:

  • 前端页面:http://localhost:9527
  • 后端接口:http://localhost:9528/v1
  • Swagger文档:http://127.0.0.1:9528/api-docs

手动安装与配置

1. 安装依赖

# 安装后端依赖
cd backend
pnpm install

# 安装前端依赖
cd frontend
pnpm install

2. 配置环境

  1. 数据库配置:

    • 确保 PostgreSQL 服务已启动
    • 创建新的数据库
    • 更新 backend/.env 中的数据库连接信息
  2. Redis配置:

    • 确保 Redis 服务已启动
    • backend/libs/config/src/redis.config.ts 下修改 Redis 连接配置
  3. 其他配置:

    • 检查并按需修改 backend/libs/config/src 下的其他配置文件

3. 数据库初始化

cd backend

# 方式一:使用 Makefile(推荐)
make init_migration

# 方式二:直接使用 prisma 命令
npx prisma migrate deploy --schema prisma/schema.prisma
npx prisma db seed

4. 生成 Prisma 客户端

pnpm prisma:generate

注意:此命令用于生成 Prisma 客户端代码,使 TypeScript 能够识别数据库模型,与数据库迁移无关。 在首次运行或 schema 变更后必须执行此命令。

5. 运行项目

# 后端
cd backend
pnpm start:dev

# 前端
cd frontend
pnpm dev

访问 http://localhost:9527 查看运行结果。

开发说明

  1. 数据库变更流程

    • 修改 prisma/schema.prisma
    • 执行 make generate_migration 生成迁移文件
    • 执行 make deploy_migration 应用迁移
  2. 配置文件说明: 所有配置文件位于 backend/libs/config

    • database.config.ts: 数据库配置
    • redis.config.ts: Redis 配置
    • jwt.config.ts: JWT 配置
    • 等等...
  3. 环境变量

    • 开发环境:.env
    • 生产环境:.env.production 自行创建
    • 测试环境:.env.test 自行创建

注意事项

  1. 首次运行必须执行数据库初始化
  2. 修改 schema 后需要重新生成 Prisma 客户端
  3. 建议使用 Docker 方式启动,可以避免环境配置问题

技术栈

后端

  • NestJS
  • Prisma
  • PostgreSQL
  • TypeScript
  • Jest

前端

  • Vue 3
  • Vite 5
  • TypeScript
  • Pinia
  • UnoCSS

贡献者

感谢以下贡献者的贡献。如果您想为本项目做出贡献,请参考 贡献指南

贡献指南

我们非常欢迎您的贡献!如果您有任何改进意见或功能建议,请在 GitHub 上给我们一个 ⭐️,这是对我们持续改进和添加新功能的最大动力!

  1. Fork 本仓库
  2. 创建您的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的改动 (git commit -m 'Add some AmazingFeature')
  4. 将您的改动推送到分支 (git push origin feature/AmazingFeature)
  5. 开启一个 Pull Request

请确保遵循我们的代码规范和提交消息格式。

About

基于 NestJS 和 CQRS 的后台管理系统脚手架,融合 DDD 驱动设计和 NestJS monorepo 结构,内置基础权限管理。为开发者提供一个灵活、模块化的起点,助力构建基础的管理系统。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published