推荐项目地址:MyFirstNest
项目简介
这是一个基于 NestJS 框架的入门级项目,由于在自学 nestjs 之路上,通过官方文档和搜索引擎所得到的教程都点到为止,并非是实现实际场景的业务,所以我便想完善实践,帮助开发者学习和实践 NestJS 的基础知识。本项目将实现一个简单又不简单的系统,展示 NestJS 的核心特性和最佳实践(个人学习中,可能存在错误),并将尽力的完善相关的注释。在项目的小角落我也留下了笔记帮助理解~
然后为了更好的展示项目功能,我添加了客户端(逐步对接中),或许也能帮助到学习前端的同学。
希望这个属于我的第一个 NestJS 项目,也能成为你的第一个 NestJS 项目参考🥰
项目特点: 最佳实践 严格的TypeScript 技术与时俱进 代码可读性强 功能完善 技术栈覆盖广泛
技术栈
- NestJS - 渐进式 Node.js 框架
- TypeScript - 类型安全的 JavaScript 超集
- TypeORM - 强大的 ORM 框架
- PostgreSQL - 关系型数据库
- Swagger - API 文档生成工具
客户端
- React
- Vite
- TailwindCSS
- ShadcnUI
项目路线图
已完成功能 ✅
- 基础项目结构搭建
- Swagger API 文档集成
- TypeORM 数据库集成
- 用户账号系统
- 用户群组结构管理
- JWT 认证与授权
- 双 token 认证:AccessToken 和 RefreshToken
- 数据库初始化和相关迁移工具
- migration 生成工具
- 数据库初始化脚本
- 数据库种子脚本
- RBAC 权限管理
- 核心 RBAC0:用户、角色、权限
- 分级 RBAC1:角色继承,角色可以继承下级角色的权限
- 约束 RBAC2:权限约束,强制职责分离,某些任务要求两个或多个角色共同完成
- 对称 RBAC3:1 + 2, 并且可以获取组织拥有的权限,继承 Group,离开 Group 后,权限消失
- 雪花算法作为 ID 生成器
- 使用 joi 进行数据验证(环境变量)
- 添加客户端来展示项目功能
- 使用 React & Vite & TailwindCSS & ShadcnUI 制作客户端
- 登录 和 自动刷新 Token
计划功能 📋
- Redis 缓存集成
- session 管理
- 日志系统实现
- 文件上传功能
- 定时任务系统
- 单元测试与 E2E 测试
- Docker 容器化部署
- 国际化支持,统一管理响应信息,并根据用户语言返回不同的多语言
- 接口限流(全局或者指定配置)
- 第三方登录集成:GitHub 等
- WebSocket 实时通信
- sse 实时通信
- 使用文档制作
- 使用 Vitepress/Docusaurus 制作项目文档
- github action 自动化部署
- 部署文档页面
项目地址:MyFirstNest