Better Auth + Drizzle + Upstash Redis 构建认证与数据层
Better Auth 负责账户认证,Drizzle+Zod 管理数据库 schema 与校验,Upstash Redis 提供缓存与限流,Resend 发送事务邮件
方案简介
该方案是博客站点的认证与数据层配方:以 Better Auth 实现用户认证(支撑留言板、管理后台、账户设置等站点功能),Drizzle ORM 配合 Zod schemas 实现类型安全的数据建模与校验,Redis 使用 Upstash 做缓存,并使用 Upstash 做 API 限流。环境变量通过 t3-env 管理,图片存储使用 Cloudflare R2,事务性邮件(如评论通知、回复通知)由 Resend 发送。整套组合为站点提供登录、数据持久化、缓存加速、接口限流和邮件通知的完整后端能力,适合需要用户体系与动态数据(评论/点赞/浏览计数)的 Next.js 站点。
亮点与能力
- Better Auth 用户认证
- Drizzle ORM + Zod schemas 类型安全数据层
- Upstash Redis 缓存与 API 限流
- 留言板(Guestbook)与管理后台实时统计
- 评论通知与回复通知邮件模板
- 图片存储使用 Cloudflare R2
- t3-env 管理环境变量
- Umami 站点分析
组成与分工
- Better Auth:认证框架,支撑账户体系
- Drizzle ORM:数据库 schema、迁移与查询,配套 Drizzle Studio 可视化
- Zod:schema 校验
- Upstash(Redis):缓存与 API rate limiting
- Resend:发送评论/回复通知等事务性邮件
- Cloudflare R2:图片存储
- t3-env:环境变量校验管理
前置要求
- Node.js >= 24
- bun >= 1.4
- Docker(运行 PostgreSQL 数据库与 Redis 服务)
服务端口:Database 为 localhost:5432,Redis 为 localhost:6379,Redis serverless 为 localhost:8079。
实施步骤
1. 安装与初始化
bash
git clone https://github.com/nelsonlaidev/nelsonlai.dev
cd nelsonlai.dev
bun install
2. 配置环境变量
复制 .env.example 到 .env.local 并按需更新环境变量:
bash
cp .env.example .env.local
3. 用 Docker 启动依赖服务
bash
docker compose up -d
4. 数据库迁移与填充
bash
bun db:migrate
bun db:seed
5. 启动应用与邮件预览
bash
bun dev # Run the development server
or
bun email:dev # Run the email preview server separately
React Email 邮件预览服务运行在 localhost:3001。
使用与配置要点
数据库日常操作脚本:
bash
bun db:generate # Generate database migrations
bun db:migrate # Run database migrations
bun db:seed # Seed the database
bun db:push # Push schema changes directly to DB
bun db:reset # Reset database
bun db:studio # Open Drizzle Studio
邮件模板相关:
bash
bun email:export # Export email templates
验证成功:应用在 localhost:3000 可访问,数据库在 localhost:5432,Redis 在 localhost:6379。
注意事项与常见问题
- Upstash 为云服务,线上使用需注册并配置对应密钥(通过
.env.local)。 - Redis serverless 本地映射在
localhost:8079,用于模拟 Upstash 环境。 - 修改 schema 后可用
bun db:push直接推送到数据库,或走bun db:generate+bun db:migrate的迁移流程。
优缺点
- ✓ 缓存与限流一体化
- ✓ 类型安全的数据库层
- ✕ 依赖多个外部云服务
出处
本方案挖掘自开源项目 nelsonlaidev/nelsonlai.dev,方案内容与实施命令均来自其 README 原文。
本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。