{"id":50933885,"url":"https://github.com/gvray/gvray-admin","last_synced_at":"2026-06-17T07:02:52.213Z","repository":{"id":300551837,"uuid":"994264408","full_name":"gvray/gvray-admin","owner":"gvray","description":"✨ 企业级后台管理系统，基于 NestJS、Prisma 和 MySQL 构建，采用 RESTful API 风格，内置 RBAC 权限模型，适用于中后台权限管理、用户系统与通用业务开发。","archived":false,"fork":false,"pushed_at":"2026-06-16T14:50:50.000Z","size":652,"stargazers_count":10,"open_issues_count":2,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-16T16:26:37.948Z","etag":null,"topics":["admin-dashboard","admin-template","authentication","authorization","backend-api","jwt-authentication","mysql","nestjs","node-js","permission-management","prisma","rbac","rest-api","role-based-access-control","swagger-ui","typescript"],"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/gvray.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-01T15:19:47.000Z","updated_at":"2026-06-16T14:53:48.000Z","dependencies_parsed_at":"2025-06-22T11:19:03.169Z","dependency_job_id":"94fc0fd1-ee6c-4e08-9876-5db09f7eabb3","html_url":"https://github.com/gvray/gvray-admin","commit_stats":null,"previous_names":["gvray/nest-admin","gvray/gvray-admin"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gvray/gvray-admin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gvray%2Fgvray-admin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gvray%2Fgvray-admin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gvray%2Fgvray-admin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gvray%2Fgvray-admin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gvray","download_url":"https://codeload.github.com/gvray/gvray-admin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gvray%2Fgvray-admin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34437451,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-dashboard","admin-template","authentication","authorization","backend-api","jwt-authentication","mysql","nestjs","node-js","permission-management","prisma","rbac","rest-api","role-based-access-control","swagger-ui","typescript"],"created_at":"2026-06-17T07:02:50.907Z","updated_at":"2026-06-17T07:02:52.207Z","avatar_url":"https://github.com/gvray.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NestAdmin\n\n✨ **NestAdmin** 是一个企业级后台管理系统，基于 [NestJS](https://nestjs.com/)、[Prisma](https://www.prisma.io/)、MySQL 和 RESTful API 架构设计，适用于中后台权限管理、用户系统与通用业务开发。\n\n## 💫 特性亮点\n\n- 🎯 **TypeScript** - 严格的类型检查，提供完整的类型定义\n- 🏗️ **模块化架构** - 基于 NestJS 模块化设计，支持按需加载\n- 🔐 **RBAC 权限** - 基于角色的访问控制，灵活的权限管理\n- 📝 **Swagger** - 自动生成 OpenAPI 规范的接口文档\n- 🎨 **代码规范** - 遵循 TypeScript 最佳实践，统一的代码风格\n- 🔄 **数据迁移** - 基于 Prisma 的数据库版本控制和迁移\n- 🛡️ **安全防护** - JWT 认证，请求加密，CORS 配置等\n- 🔑 **灵活登录** - 支持用户名或邮箱登录\n- 🏢 **组织架构** - 完整的部门和岗位管理体系\n\n## 🚀 技术栈\n\n### 后端技术\n- **[NestJS](https://nestjs.com/)** - 渐进式 Node.js 框架，支持完整的依赖注入\n- **[Prisma](https://www.prisma.io/)** - 下一代 ORM，类型安全且高性能\n- **[MySQL](https://www.mysql.com/)** - 企业级关系型数据库\n- **[TypeScript](https://www.typescriptlang.org/)** - JavaScript 的超集，提供类型系统\n- **[JWT](https://jwt.io/)** - JSON Web Token 认证机制\n- **[Swagger](https://swagger.io/)** - API 文档生成与测试工具\n\n### 开发工具\n- **ESLint** - 代码质量检查\n- **Prettier** - 代码格式化\n- **Jest** - 单元测试框架\n- **Docker** - 容器化部署支持\n\n## ✨ 功能特性\n\n### 🔐 认证与授权\n- [x] 完整的注册登录流程\n- [x] JWT 令牌认证机制\n- [x] 支持用户名或邮箱登录\n- [x] 权限验证守卫\n- [x] 角色权限管理\n- [ ] 刷新令牌机制（Access Token + Refresh Token）\n- [ ] 登录日志记录与分析\n- [ ] 单点登录（SSO）集成\n- [ ] OAuth2 第三方登录（GitHub、Google）\n- [ ] 双因素认证（2FA）\n- [ ] 登录失败限制与封禁\n\n### 👥 用户管理\n- [x] 用户基础管理（CRUD）\n- [x] 灵活的角色分配\n- [x] 部门岗位关联\n- [ ] 批量用户操作\n- [ ] 用户数据导入导出（Excel、CSV）\n- [ ] 用户状态管理（在线、离线、禁用）\n- [ ] 头像上传管理（本地/云存储）\n- [ ] 用户操作日志\n- [ ] 用户登录设备管理\n\n### 👑 角色权限\n- [x] 角色基础管理（CRUD）\n- [x] 角色权限管理\n- [x] RBAC 权限控制\n- [x] 权限代码管理\n- [x] 权限分配机制\n- [x] 25个基础权限预设\n- [ ] 批量角色操作\n- [ ] 数据权限控制（行级、列级）\n- [ ] 菜单权限管理\n- [ ] 权限缓存优化（Redis）\n- [ ] 权限树形结构\n- [ ] 动态权限加载\n- [ ] 临时权限分配\n- [ ] 权限继承机制\n\n### 🏢 组织架构\n- [x] 部门管理（CRUD）\n- [x] 岗位管理（CRUD）\n- [x] 部门岗位关联\n- [x] 组织架构树形展示\n- [ ] 多级部门支持\n- [ ] 部门权限继承\n- [ ] 岗位权限模板\n\n### ⚙️ 系统管理\n- [x] 系统参数配置（环境变量）\n- [x] 数据字典维护（权限、角色、部门、岗位）\n- [ ] 菜单动态管理\n- [ ] 系统通知公告\n- [ ] 综合日志管理\n  - [ ] 操作行为日志（审计日志）\n  - [ ] 登录记录日志\n  - [ ] 系统运行日志\n- [ ] 系统备份还原\n- [ ] 敏感数据加密\n\n### 📚 接口文档\n- [x] Swagger 接口文档（OpenAPI 3.0）\n- [x] 详细的API描述和示例\n- [x] Bearer Token 认证支持\n- [ ] 接口版本管理\n- [ ] 接口访问控制（限流、黑白名单）\n- [ ] 接口性能监控\n- [ ] 接口调试工具\n- [ ] Mock 数据支持\n\n### 🔍 系统监控\n- [ ] 在线用户监控（实时统计）\n- [ ] 服务器状态监控（CPU、内存、磁盘）\n- [ ] 数据库性能监控\n- [ ] 缓存系统监控\n- [ ] 定时任务管理（任务调度）\n- [ ] 服务健康检查\n- [ ] 性能分析工具\n- [ ] 告警通知机制\n\n### 🛠️ 开发支持\n- [x] 数据库迁移工具（Prisma Migrate）\n- [x] 数据填充脚本（Seed）\n- [x] 完整的种子数据（管理员、角色、权限、部门、岗位）\n- [ ] 代码自动生成（CRUD）\n- [ ] 表单在线构建\n- [ ] 开发技术文档\n- [ ] 单元测试覆盖\n- [ ] API 自动化测试\n- [ ] 持续集成/持续部署（CI/CD）\n\n## 🚀 快速开始\n\n### 环境要求\n- Node.js \u003e= 16\n- MySQL \u003e= 8.0\n- pnpm \u003e= 8.0\n\n### 开发环境设置\n```bash\n# 克隆项目\ngit clone https://github.com/gvray/gvray-admin.git\n\n# 进入项目目录\ncd gvray-admin\n\n# 安装依赖\npnpm install\n\n# 配置环境变量\ncp .env.example .env\n\n# 执行数据库迁移\npnpm prisma migrate dev\n\n# 初始化基础数据\npnpm prisma db seed\n\n# 启动开发服务\npnpm start:dev\n```\n\n### 生产环境部署\n```bash\n# 构建项目\npnpm build\n\n# 启动服务\npnpm start:prod\n```\n\n## 👤 默认账户\n\n- 管理员账号：admin@example.com 或 admin\n- 初始密码：123456\n\n## 🔧 API 测试\n\n### 登录测试\n```bash\n# 用户名登录\ncurl -X POST http://localhost:8001/auth/login \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"account\": \"admin\", \"password\": \"123456\"}'\n\n# 邮箱登录\ncurl -X POST http://localhost:8001/auth/login \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"account\": \"admin@example.com\", \"password\": \"123456\"}'\n```\n\n### 获取用户列表\n```bash\n# 使用登录返回的 token\ncurl -X GET http://localhost:8001/users \\\n  -H \"Authorization: Bearer YOUR_TOKEN_HERE\"\n```\n\n## 📁 项目结构\n\n```\nsrc\n├── config                # 配置文件目录\n│   ├── app.config.ts     # 应用配置\n│   ├── auth.config.ts    # 认证配置\n│   └── database.config.ts# 数据库配置\n├── core                  # 核心功能模块\n│   ├── decorators       # 自定义装饰器\n│   │   ├── permissions.decorator.ts  # 权限装饰器\n│   │   └── roles.decorator.ts        # 角色装饰器\n│   ├── guards          # 权限守卫\n│   │   ├── jwt-auth.guard.ts         # JWT认证守卫\n│   │   ├── permissions.guard.ts      # 权限守卫\n│   │   └── roles.guard.ts            # 角色守卫\n│   ├── interceptors    # 拦截器\n│   ├── filters         # 异常过滤器\n│   └── strategies      # 认证策略\n│       └── jwt.strategy.ts           # JWT策略\n├── modules              # 业务功能模块\n│   ├── auth            # 认证授权模块\n│   │   ├── auth.controller.ts        # 认证控制器\n│   │   ├── auth.service.ts           # 认证服务\n│   │   └── dto                        # 数据传输对象\n│   │       ├── login.dto.ts          # 登录DTO\n│   │       └── register.dto.ts       # 注册DTO\n│   ├── users           # 用户管理模块\n│   │   ├── users.controller.ts       # 用户控制器\n│   │   ├── users.service.ts          # 用户服务\n│   │   └── dto                        # 数据传输对象\n│   ├── roles           # 角色管理模块\n│   │   ├── roles.controller.ts       # 角色控制器\n│   │   ├── roles.service.ts          # 角色服务\n│   │   └── dto                        # 数据传输对象\n│   ├── permissions     # 权限管理模块\n│   │   ├── permissions.controller.ts # 权限控制器\n│   │   ├── permissions.service.ts    # 权限服务\n│   │   └── dto                        # 数据传输对象\n│   ├── departments     # 部门管理模块\n│   │   ├── departments.controller.ts # 部门控制器\n│   │   └── departments.service.ts    # 部门服务\n│   ├── positions       # 岗位管理模块\n│   │   ├── positions.controller.ts   # 岗位控制器\n│   │   └── positions.service.ts      # 岗位服务\n│   └── auth            # 认证授权模块\n│       └── dto            # 数据传输对象\n├── shared              # 共享模块\n│   ├── constants       # 常量定义\n│   ├── dto            # 数据传输对象\n│   └── utils          # 工具函数\n└── prisma              # Prisma 配置\n    ├── migrations      # 数据库迁移\n    ├── seeds          # 数据填充\n    │   └── permissions.ts            # 权限种子数据\n    └── seed.ts                       # 主种子脚本\n```\n\n## 📄 开源协议\n\n本项目采用 [MIT 许可证](LICENSE) 开源。\n\n## 🤝 贡献指南\n\n欢迎提交 Issue 或 Pull Request 贡献代码。详情请参阅 [贡献指南](CONTRIBUTING.md)。\n\n## 📚 相关文档\n\n- [NestJS 官方文档](https://docs.nestjs.com/)\n- [Prisma 官方文档](https://www.prisma.io/docs/)\n- [TypeScript 官方文档](https://www.typescriptlang.org/docs/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgvray%2Fgvray-admin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgvray%2Fgvray-admin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgvray%2Fgvray-admin/lists"}