技术栈
完整的技术选型列表及选择理由。
本文档列出 Raypx 使用的所有核心技术及其选择理由。
| 技术 | 版本 | 选择理由 |
|---|
| TanStack Start | 最新 | 基于 Vite 8 的全栈框架,支持 SSR/SSG/CSR,类型安全的文件路由 |
| Nitro | 最新 | 通用服务端运行时,支持多种部署目标,内置 HMR |
| Vite | 8 | 极快的开发服务器和构建工具,原生 ESM 支持 |
| React | 19 | 并发渲染、自动批处理、React Compiler 性能优化 |
- 与 Next.js 相比,TanStack Start 基于 Vite,构建速度更快,插件生态更丰富
- 与 Remix 相比,TanStack Start 的路由类型安全性更强,与 TanStack 生态无缝集成
- 底层由 Nitro 驱动,可部署到 Cloudflare Workers、Deno Deploy 等多种环境
| 技术 | 版本 | 选择理由 |
|---|
| PostgreSQL | 14+ | 功能最强大的开源关系型数据库 |
| Drizzle ORM | 最新 | 轻量级、类型安全、零运行时开销的 ORM |
- 类型安全——从 Schema 到查询结果全链路类型推导
- 接近原生 SQL——学习成本低,查询性能可控
- 轻量级——打包体积小,运行时无额外开销
- 迁移管理——内置迁移工具,支持版本控制和回滚
| 技术 | 版本 | 选择理由 |
|---|
| Better Auth | 最新 | 类型安全、模块化、功能完备的认证方案 |
- 类型安全——客户端和服务端共享完整的 TypeScript 类型
- 多策略支持——邮箱密码、Google OAuth、GitHub OAuth、双因素认证
- 插件化——通过插件扩展功能,按需引入
- 轻量级——不依赖 Express 或 Next.js,可在任何框架中使用
| 技术 | 版本 | 选择理由 |
|---|
| oRPC | 最新 | 类型安全的 RPC 框架,零运行时开销 |
| Zod | 最新 | Schema 定义和运行时校验库 |
- 与 TanStack Start 深度集成,利用 Server Functions 实现类型安全的 API 调用
- 零运行时开销——编译后类型信息被擦除
- 与 Zod 深度集成——Schema 定义即 API 契约
| 技术 | 版本 | 选择理由 |
|---|
| Tailwind CSS | 4 | 原子化 CSS 框架,极快的构建速度 |
| shadcn/ui | 最新 | 基于 Radix UI 的无障碍组件,可定制 |
| React Compiler | 最新 | 自动性能优化,无需手动 memo |
- v4 版本使用全新的 Oxide 引擎,构建速度提升 10 倍
- 零配置开箱即用,无需复杂的配置文件
- CSS-first 配置方式,直接在 CSS 中定义设计令牌
| 技术 | 版本 | 选择理由 |
|---|
| use-intl | 最新 | Next.js Intl 生态的核心库,支持 React Server Components |
| Fumadocs | 最新 | 文档系统,内置 i18n 路由和搜索 |
- 基于路径前缀的语言路由(
/en-US/...、/zh-CN/...)
- 语言检测中间件自动识别用户偏好
- 支持服务端渲染的翻译内容
| 技术 | 版本 | 选择理由 |
|---|
| Resend | 最新 | 开发者友好的邮件 API 服务 |
| React Email | 最新 | 使用 React 组件编写邮件模板 |
| 技术 | 用途 |
|---|
| Biome | 代码格式化、检查和修复(替代 ESLint + Prettier) |
| Lefthook | Git 钩子管理器(替代 Husky) |
| Turborepo | Monorepo 构建编排和缓存 |
| pnpm | 包管理器,高效的磁盘空间利用 |
| Docker | 容器化部署 |
| TypeScript | 类型安全的 JavaScript 超集 |
| 技术 | 用途 |
|---|
| pnpm workspaces | Monorepo 包管理 |
| Turborepo | 任务编排和增量构建缓存 |
| changesets | 版本变更管理(可选) |
- 架构概览 — 系统分层设计
- 内部包 — 11 个 Monorepo 包详解
- 部署指南 — Docker 部署说明