基于 NestJS、Next.js 和 React 构建的企业级统一用户授权和身份管理系统 Monorepo 项目。
此 monorepo 包含以下项目:
统一授权后端服务,提供完整的用户认证、授权和管理功能。
- 🔐 用户认证 - 登录、注册、密码重置
- 🔑 Token 管理 - JWT Token 生成和验证
- 👥 账号管理 - 用户信息、权限管理
- 🔒 OTP 支持 - 双因素认证(2FA)
- 📧 邮件服务 - 验证码发送、通知邮件
- ☁️ 资源管理 - 文件上传、头像存储
- 🌍 国际化 - 多语言支持(中英文)
- 📝 Swagger 文档 - 自动生成 API 文档
统一用户授权平台前端应用。
- 🔐 用户认证 - 登录、注册、密码重置界面
- 👤 用户管理 - 个人资料、账号设置、安全管理
- 🔒 双因素认证 - OTP、Google Authenticator 支持
- 🖼️ 头像管理 - 上传、裁剪、预览
- 🎨 现代 UI - 基于 @meta-1/design 组件库
- 🌍 国际化 - 支持多语言切换
- 🌗 主题切换 - 明暗主题支持
- 📱 响应式设计 - 完美适配各种设备
账号管理核心模块。
特性:
- 👥 用户管理 - 用户 CRUD 操作
- 🔐 认证服务 - 登录、注册、Token 管理
- 🔒 OTP 管理 - 双因素认证管理
- 🛡️ 权限控制 - 基于角色的访问控制(RBAC)
- 📊 应用管理 - 多应用支持
- 🔄 会话管理 - 用户会话跟踪
共享类型定义和 Zod Schema。
特性:
- 🛡️ 类型安全 - TypeScript 类型定义
- ✅ 数据验证 - Zod Schema 验证
- 🔄 共享复用 - 前后端共享类型
- 📝 账号类型 - 用户、OTP 相关类型
- Node.js >= 18
- pnpm >= 8
- Redis >= 6.0
- MySQL >= 8.0
- Nacos >= 2.0 (可选)
# 克隆仓库
git clone <repository-url>
cd authub
# 安装依赖
pnpm installauthub/
├── apps/ # 应用程序
│ ├── server/ # NestJS 后端服务
│ └── web/ # Next.js 前端应用
├── libs/ # 后端库
│ ├── account/ # 账号管理模块
│ └── types/ # 类型定义
├── locales/ # 国际化语言文件
│ ├── en.json
│ └── zh-CN.json
├── scripts/ # 构建和工具脚本
│ └── sync-locales-cli.ts
└── package.json
# 开发模式运行后端服务
pnpm run dev:server # 启动 server (端口: 3100)
# 构建后端服务
pnpm run build:server # 构建 server
# 启动生产服务
pnpm run start:server # 运行构建后的服务# 开发模式运行前端应用
pnpm run dev:web # 启动 web-authub (端口: 4002)
# 构建前端应用
pnpm run build:web # 构建 web-authub# 同步语言文件
pnpm run sync:locales
# 代码检查和格式化
pnpm run lint # 运行代码检查
pnpm run format # 格式化代码
# 测试
pnpm run test # 运行单元测试
pnpm run test:watch # 监听模式运行测试
pnpm run test:cov # 运行测试并生成覆盖率报告- AuthHub Server - 后端服务完整文档
- AuthHub Web - 前端应用完整文档
- @meta-1/authub-account - 账号管理、认证、OTP、权限控制
- @meta-1/authub-types - 类型定义和 Schema
此项目使用了来自 @meta-1 组织的共享库(通过 npm 安装):
- @meta-1/nest-common - 通用工具和装饰器
- @meta-1/nest-security - 安全认证模块
- @meta-1/nest-message - 邮件服务
- @meta-1/nest-nacos - Nacos 集成
- @meta-1/nest-assets - 资源管理
- @meta-1/nest-types - 基础类型定义
- @meta-1/design - UI 组件库
- @meta-1/editor - 富文本编辑器
项目采用 Nacos 配置中心统一管理配置:
- 环境变量只需配置 Nacos 连接信息
- 所有业务配置(数据库、Redis、账号配置等)通过 Nacos 管理
- 支持配置热更新和环境隔离
- Nacos 不可用时支持降级启动
详细配置说明请查看 server 文档
# 运行单元测试
pnpm run test
# 监听模式运行测试
pnpm run test:watch
# 生成覆盖率报告
pnpm run test:cov- NestJS 11 - 企业级 Node.js 框架
- TypeScript 5 - 类型安全的 JavaScript
- Redis - 缓存和会话存储(ioredis)
- TypeORM - ORM 框架
- MySQL - 关系型数据库
- Nacos - 配置管理和服务发现
- Zod - 数据验证和 Schema 定义
- AWS SDK - AWS SES、S3 等云服务
- Aliyun SDK - 阿里云 OSS、邮件推送等
- Next.js 16 - React 应用框架
- React 19 - UI 库
- TypeScript 5 - 类型安全
- Tailwind CSS 4 - 原子化 CSS 框架
- @meta-1/design - UI 组件库
- Recoil - 状态管理
- React Query - 数据获取和缓存
- i18next - 国际化
- JSEncrypt - RSA 加密
- Zod - 数据验证
- pnpm - 高效的包管理器
- Biome - 快速的代码检查和格式化工具
- Jest - 单元测试框架
- JWT Token 认证
- RSA 密码加密传输
- Redis 会话管理
- OTP 双因素认证
- API 权限控制
- SQL 注入防护
- XSS 防护
- RSA 加密敏感数据
- HTTPS 传输
- Token 自动刷新
- XSS 防护
- CSRF 防护
# 构建
pnpm run build:server
# 运行
pnpm run start:server# 构建
pnpm run build:web
# 可以部署到 Vercel、Netlify 等平台如果需要在本地开发时覆盖某些依赖包,在 package.json 中添加:
{
"pnpm": {
"overrides": {
"@meta-1/nest-assets": "file:../support/libs/assets",
"@meta-1/nest-common": "file:../support/libs/common",
"@meta-1/nest-message": "file:../support/libs/message",
"@meta-1/nest-nacos": "file:../support/libs/nacos",
"@meta-1/nest-security": "file:../support/libs/security",
"@meta-1/nest-types": "file:../support/libs/types"
}
}
}详细说明请参考项目中的本地配置文档。
欢迎贡献!请随时提交 Pull Request。
如有问题和支持需求,请在仓库中提交 issue。