{"id":21822202,"url":"https://github.com/soybeanjs/soybean-admin-nestjs","last_synced_at":"2026-03-16T10:34:47.350Z","repository":{"id":105059248,"uuid":"467860180","full_name":"soybeanjs/soybean-admin-nestjs","owner":"soybeanjs","description":"基于 NestJS 和 CQRS 的后台管理系统脚手架，融合 DDD 驱动设计和 NestJS monorepo 结构，内置基础权限管理。为开发者提供一个灵活、模块化的起点，助力构建基础的管理系统。","archived":false,"fork":false,"pushed_at":"2025-03-26T07:50:08.000Z","size":7208,"stargazers_count":116,"open_issues_count":2,"forks_count":34,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-29T18:06:07.462Z","etag":null,"topics":["admin","cqrs","monorepo","nestjs"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soybeanjs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-09T09:29:00.000Z","updated_at":"2025-03-28T08:52:21.000Z","dependencies_parsed_at":"2025-03-06T06:12:53.766Z","dependency_job_id":"73c489ea-1d3b-4abe-93d2-d49639359585","html_url":"https://github.com/soybeanjs/soybean-admin-nestjs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soybeanjs%2Fsoybean-admin-nestjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soybeanjs%2Fsoybean-admin-nestjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soybeanjs%2Fsoybean-admin-nestjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soybeanjs%2Fsoybean-admin-nestjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soybeanjs","download_url":"https://codeload.github.com/soybeanjs/soybean-admin-nestjs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247386263,"owners_count":20930618,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin","cqrs","monorepo","nestjs"],"created_at":"2024-11-27T17:13:38.868Z","updated_at":"2026-03-16T10:34:47.282Z","avatar_url":"https://github.com/soybeanjs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SoybeanAdmin NestJS\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/honghuangdc/soybean-admin-nestjs/blob/main/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"license\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/honghuangdc/soybean-admin-nestjs/stargazers\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/honghuangdc/soybean-admin-nestjs.svg\" alt=\"stars\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/honghuangdc/soybean-admin-nestjs/network/members\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/forks/honghuangdc/soybean-admin-nestjs.svg\" alt=\"forks\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/honghuangdc/soybean-admin-nestjs/issues\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues/honghuangdc/soybean-admin-nestjs.svg\" alt=\"issues\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## 在线预览\n\n- 预览地址：[https://soybean-nest.bytebytebrew.com](https://soybean-nest.bytebytebrew.com)\n\n\u003e **注意**：由于数据库(PostgreSQL)和缓存(Redis)部署在Vercel上，访问可能需要科学上网工具。如果遇到访问缓慢或者无法访问问题，建议使用本地部署方式进行体验。\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#简介\"\u003e简介\u003c/a\u003e •\n  \u003ca href=\"#特性\"\u003e特性\u003c/a\u003e •\n  \u003ca href=\"#项目结构\"\u003e项目结构\u003c/a\u003e •\n  \u003ca href=\"#快速开始\"\u003e快速开始\u003c/a\u003e •\n  \u003ca href=\"#技术栈\"\u003e技术栈\u003c/a\u003e •\n  \u003ca href=\"#贡献指南\"\u003e贡献指南\u003c/a\u003e •\n  \u003ca href=\"#许可证\"\u003e许可证\u003c/a\u003e\n\u003c/p\u003e\n\n## 简介\n\nSoybeanAdmin NestJS 是一个基于 NestJS 的后台管理系统脚手架，采用 monorepo 结构设计。它为开发者提供了一个灵活、模块化的起点，内置基础的权限管理功能，旨在帮助快速构建高质量的企业级管理系统。\n\n本项目的后端基于 NestJS 框架，提供了多种架构模式供选择，包括传统的 MVC 模式（在 base-demo 中展示）以及更高级的 CQRS 和 DDD 设计模式（在 base-system 中实现）。它集成了 Prisma ORM 用于数据库操作，为开发提供了极大的便利。\n\n前端采用了最新的技术栈，包括 Vue3、Vite5、TypeScript、Pinia 和 UnoCSS，结合了丰富的主题配置和组件。\n\n无论您是要开发一个小型的管理后台，还是构建 CMS 等企业应用，SoybeanAdmin NestJS 都能为您提供一个坚实的起点和高效的开发体验。本项目提供了灵活可扩展的基础，您可以根据自己的需求和偏好进行定制和扩展。\n\n值得注意的是，虽然项目中包含了CQRS和DDD设计的示例，但这并不是强制性的。在 `base-demo` 目录中，我们展示了如何根据个人喜好和业务需求来组织代码结构。您可以完全按照自己的业务规范来使用这个脚手架，不必严格遵循CQRS或DDD的模式。这种灵活性使得SoybeanAdmin NestJS 能够适应各种不同的开发风格和项目需求。\n\n## 特性\n\n- **模块化设计**：采用 NestJS 的模块系统，实现高内聚、低耦合的代码组织。\n- **多种架构模式**：支持传统 MVC、CQRS 和 DDD 设计模式，满足不同复杂度的项目需求。\n- **Monorepo 结构**：便于管理多个相关的项目和共享代码。\n- **Prisma ORM**：提供类型安全的数据库操作。\n- **自动化路由**：简化 API 端点的管理。\n- **权限管理**：内置基于角色的访问控制（RBAC）系统。\n- **JWT 认证**：安全的用户认证和授权机制。\n- **API 文档**：自动生成 Swagger API 文档。\n- **环境配置**：支持多环境配置。\n- **前端技术栈**：Vue3、Vite5、TypeScript、Pinia 和 UnoCSS。\n- **主题定制**：丰富的主题配置选项。\n- **国际化支持**：轻松实现多语言支持。\n\n## 项目结构\n\n```\nsoybean-admin-nestjs/\n├── backend/                 # 后端代码\n│   ├── .http/               # HTTP 请求文件\n│   ├── apps/                # 应用模块\n│   │   ├── base-demo/       # 基础演示模块（MVC 模式）\n│   │   └── base-system/     # 基础系统模块（CQRS/DDD 模式）\n│   │       └── src/\n│   │           ├── api/     # API 接口\n│   │           ├── infra/   # 基础设施\n│   │           ├── lib/     # 领域模块\n│   │           └── resources/ # 资源文件\n│   ├── dist/                # 编译输出目录\n│   ├── libs/                # 共享库\n│   │   ├── bootstrap/       # 启动模块\n│   │   ├── config/          # 配置模块\n│   │   ├── constants/       # 常量定义\n│   │   ├── global/          # 全局模块\n│   │   ├── infra/           # 基础设施\n│   │   │   ├── adapter/     # 适配器\n│   │   │   ├── decorators/  # 装饰器\n│   │   │   ├── filters/     # 过滤器\n│   │   │   ├── guard/       # 守卫\n│   │   │   ├── interceptors/# 拦截器\n│   │   │   ├── rest/        # REST 相关\n│   │   │   └── strategies/  # 策略\n│   │   ├── shared/          # 共享模块\n│   │   │   ├── errors/      # 错误处理\n│   │   │   ├── ip2region/   # IP 地址转换\n│   │   │   ├── oss/         # 对象存储\n│   │   │   ├── prisma/      # Prisma 相关\n│   │   │   └── redis/       # Redis 相关\n│   │   ├── typings/         # 类型定义\n│   │   └── utils/           # 工具函数\n│   ├── node_modules/        # 依赖包\n│   └── prisma/              # Prisma 配置和迁移\n├── frontend/                # 前端代码\n└── README.md                # 项目说明文档\n```\n\n## 快速开始\n\n### 环境要求\n\n- Node.js: 18.x.x 或更高版本\n- PostgreSQL: 13.x 或更高版本\n- Redis: 6.x 或更高版本\n- pnpm: 8.x.x 或更高版本\n- Docker (推荐): 20.x.x 或更高版本\n\n### 快速开始（推荐方式）\n\n使用 Docker Compose 一键启动所有服务（包含 PostgreSQL、Redis 等依赖）：\n\n```bash\ndocker-compose -p soybean-admin-nest up -d\n```\n\n启动后即可访问：\n\n- 前端页面：`http://localhost:9527`\n- 后端接口：`http://localhost:9528/v1`\n- Swagger文档：`http://127.0.0.1:9528/api-docs`\n\n### 手动安装与配置\n\n#### 1. 安装依赖\n\n```bash\n# 安装后端依赖\ncd backend\npnpm install\n\n# 安装前端依赖\ncd frontend\npnpm install\n```\n\n#### 2. 配置环境\n\n1. 数据库配置：\n   - 确保 PostgreSQL 服务已启动\n   - 创建新的数据库\n   - 更新 `backend/.env` 中的数据库连接信息\n\n2. Redis配置：\n   - 确保 Redis 服务已启动\n   - 在 `backend/libs/config/src/redis.config.ts` 下修改 Redis 连接配置\n\n3. 其他配置：\n   - 检查并按需修改 `backend/libs/config/src` 下的其他配置文件\n\n#### 3. 数据库初始化\n\n```bash\ncd backend\n\n# 方式一：使用 Makefile（推荐）\nmake init_migration\n\n# 方式二：直接使用 prisma 命令\nnpx prisma migrate deploy --schema prisma/schema.prisma\nnpx prisma db seed\n```\n\n#### 4. 生成 Prisma 客户端\n\n```bash\npnpm prisma:generate\n```\n\n\u003e 注意：此命令用于生成 Prisma 客户端代码，使 TypeScript 能够识别数据库模型，与数据库迁移无关。\n\u003e 在首次运行或 schema 变更后必须执行此命令。\n\n#### 5. 运行项目\n\n```bash\n# 后端\ncd backend\npnpm start:dev\n\n# 前端\ncd frontend\npnpm dev\n```\n\n访问 `http://localhost:9527` 查看运行结果。\n\n### 开发说明\n\n1. **数据库变更流程**：\n   - 修改 `prisma/schema.prisma`\n   - 执行 `make generate_migration` 生成迁移文件\n   - 执行 `make deploy_migration` 应用迁移\n\n2. **配置文件说明**：\n   所有配置文件位于 `backend/libs/config`：\n   - `database.config.ts`: 数据库配置\n   - `redis.config.ts`: Redis 配置\n   - `jwt.config.ts`: JWT 配置\n   - 等等...\n\n3. **环境变量**：\n   - 开发环境：`.env`\n   - 生产环境：`.env.production` 自行创建\n   - 测试环境：`.env.test` 自行创建\n\n### 注意事项\n\n1. 首次运行必须执行数据库初始化\n2. 修改 schema 后需要重新生成 Prisma 客户端\n3. 建议使用 Docker 方式启动，可以避免环境配置问题\n\n## 技术栈\n\n### 后端\n\n- NestJS\n- Prisma\n- PostgreSQL\n- TypeScript\n- Jest\n\n### 前端\n\n- Vue 3\n- Vite 5\n- TypeScript\n- Pinia\n- UnoCSS\n\n## 贡献者\n\n感谢以下贡献者的贡献。如果您想为本项目做出贡献，请参考 [贡献指南](#贡献指南)。\n\n\u003ca href=\"https://github.com/honghuangdc/soybean-admin-nestjs/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=honghuangdc/soybean-admin-nestjs\" /\u003e\n\u003c/a\u003e\n\n## 贡献指南\n\n我们非常欢迎您的贡献！如果您有任何改进意见或功能建议，请在 GitHub 上给我们一个 ⭐️，这是对我们持续改进和添加新功能的最大动力！\n\n1. Fork 本仓库\n2. 创建您的特性分支 (`git checkout -b feature/AmazingFeature`)\n3. 提交您的改动 (`git commit -m 'Add some AmazingFeature'`)\n4. 将您的改动推送到分支 (`git push origin feature/AmazingFeature`)\n5. 开启一个 Pull Request\n\n请确保遵循我们的代码规范和提交消息格式。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoybeanjs%2Fsoybean-admin-nestjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoybeanjs%2Fsoybean-admin-nestjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoybeanjs%2Fsoybean-admin-nestjs/lists"}