最近做一些项目,老是找一些后端的服务模板,总是没有一款称心的模板来使用,闲暇时间自己做一个成熟点的模板来封装一下。
技术选型
所以在我踩了很多坑后,分享推荐一份通用的 Nest.js 技术选型,经过测试基本可以部署在任何平台上。而且涵盖了大多数 SaaS 需求:
- 🗃️ 数据库: PostgreSQL
- 🗃️ 数据库ORM: Drizzle ORM
- ⚡ 缓存 / 队列:Redis + BullMQ
- 🔐 Auth 鉴权:Passport.js + JWT / OAuth
- 🦉 任务:bull
- 静态类型推断: Zod
- 🪝 Webhook 接收 Stripe、Zapier、外部服务通知
- 📬 邮件: Resend (邮件发送服务)
- 博客: MDX support with Fumadocs MDX
- 📄 API文档: @nestjs/swagger
- 🌐 国际化: nestjs-i18n
- 暗色主题: Next-themes
- 🐳 部署容器化 Docker
- 🌳 依赖更新管理 taze
- 🔧 CI/CD GitHub Actions / Vercel (for FE)
- Type Safety: Full TypeScript + Zod validation
- Lint & Formatter: Biome
首先稍微解释一下一些和成本无关的技术选型:
- 数据库 Drizzle ORM 是一个非常轻量级的 ORM 库,类型友好,而且支持多种数据库,例如 PostgreSQL,MySQL,SQLite 等。最重要的是性能比 Prisma 好,在 Edge 这类平台更有优势。
- 博客和文档选择 Fumadocs ,熟悉我开源博客项目 的都知道,我一般是使用 content-collections 来作为 MDX 的管理和渲染。但是 Fumadocs 项目又支持文档功能,例如搜索,主题,渲染等,又支持 MDX 的管理渲染等,所以为了减少依赖和统一技术栈,我已经慢慢迁移到 Fumadocs 了。
- Lint 和 Formatter 选择 Biome ,没有选择默认的 EsLint + Prettier 组合,是因为使用 Biome 使用 Rust 性能确实更好,并且因为 Biome 合二为一,配置起来更加简单。
架构方案
开始使用
……………….