Docs/architecture/技术栈

技术栈

NextShip 采用现代化、生产就绪的技术栈构建。

核心框架

技术版本用途
Next.js16.xReact 全栈框架
React19.xUI 库
TypeScript5.x类型安全
pnpm9.x包管理器

前端

UI 与样式

  • Tailwind CSS v4 - 原子化 CSS,支持 JIT 编译
  • shadcn/ui - 基于 Radix UI 的可访问、可定制组件
  • Lucide React - 精美图标库
  • Framer Motion - 声明式动画

状态管理

用途
TanStack Query服务端状态(API 数据缓存)
Zustand客户端状态(UI 状态、偏好设置)
nuqsURL 状态(筛选、分页)

后端

数据库

  • Drizzle ORM - 轻量级、类型安全的 SQL ORM
  • Neon - 支持分支的 Serverless PostgreSQL

为什么选择 Drizzle 而不是 Prisma?

  • 无 Rust 引擎,更轻量
  • 类 SQL 语法,学习曲线更低
  • 完整的类型推断,无需生成
  • 兼容 Edge Runtime

身份认证

  • Better Auth - 为 Next.js 设计的现代认证库
    • OAuth(Google、GitHub)
    • 邮箱/密码
    • 魔法链接
    • 双因素认证
    • 完全类型安全

授权(RBAC)

  • Casbin - 强大、灵活的访问控制
    • 角色层级(superadmin > admin > user)
    • 基于策略的权限
    • 动态策略管理
    • 管理后台权限管理界面

支付

提供商功能
Stripe订阅、一次性付款、客户门户
Creem备选支付提供商,功能相同

通过 PAYMENT_PROVIDER 环境变量配置。

积分系统

  • 基于 SKU 的积分套餐
  • 按 API 调用追踪用量
  • 带交易记录的余额管理

邮件

  • Resend - 邮件发送服务
  • React Email - 使用 React 组件构建邮件

文件存储

  • Cloudflare R2AWS S3 - 对象存储
  • 预签名 URL 实现安全上传
  • 支持图片优化

AI 网关

  • AI 服务的 API 代理(OpenAI、Anthropic 等)
  • 基于积分的按请求计费
  • 用量日志与分析
  • 速率限制

API 层

技术用途
Server Actions类型安全的服务端变更
ZodSchema 验证
API Routes对外 API 的 REST 端点

基础设施

服务用途
Vercel托管与部署
NeonServerless PostgreSQL
Cloudflare R2文件存储
Resend邮件发送

开发工具

  • Biome - 快速的 Linter 和 Formatter(替代 ESLint + Prettier)
  • Drizzle Kit - 数据库迁移和可视化工具
  • Velite - MDX 内容处理
  • TypeScript - 静态类型检查

日志

  • Pino - 快速、结构化日志
  • next-logger - Next.js 日志拦截
  • pino-pretty - 开发环境日志格式化