fischerX/docs/architecture/tech-stack.md

156 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 技术栈文档
> **文档版本**: v1.0.0
> **创建日期**: 2026-05-25
> **适用范围**: FischerX 项目开发人员
## 目录
- [前端技术栈](#前端技术栈)
- [后端技术栈](#后端技术栈)
- [基础设施](#基础设施)
- [技术选型理由](#技术选型理由)
---
## 前端技术栈
### 核心框架
| 技术 | 版本 | 用途 |
|-----|------|------|
| Next.js | 16+ | React 框架,支持 SSR/SSG |
| React | 18+ | UI 库 |
| TypeScript | 5+ | 类型安全的 JavaScript |
### UI 组件
| 技术 | 版本 | 用途 |
|-----|------|------|
| Tailwind CSS | 4+ | 原子化 CSS 框架 |
| Shadcn UI | latest | 基于 Radix UI 的组件库 |
| Lucide React | latest | 图标库 |
### 状态管理
| 技术 | 版本 | 用途 |
|-----|------|------|
| Zustand | latest | 轻量级状态管理 |
| React Query | 5+ | 服务端状态管理 |
| React Hook Form | latest | 表单管理 |
### 工具
| 技术 | 版本 | 用途 |
|-----|------|------|
| Vitest | latest | 测试框架 |
| Playwright | latest | E2E 测试 |
| ESLint | latest | 代码检查 |
| Prettier | latest | 代码格式化 |
---
## 后端技术栈
### 核心框架
| 技术 | 版本 | 用途 |
|-----|------|------|
| NestJS | 11+ | Node.js 企业级框架 |
| TypeScript | 5+ | 类型安全 |
| Prisma | 6+ | ORM |
### 数据库
| 技术 | 版本 | 用途 |
|-----|------|------|
| PostgreSQL | 15+ | 主数据库 |
| Redis | 7+ | 缓存和会话存储 |
### 认证与安全
| 技术 | 版本 | 用途 |
|-----|------|------|
| Passport.js | latest | 认证中间件 |
| JWT | latest | Token 认证 |
| bcrypt | latest | 密码加密 |
### 工具
| 技术 | 版本 | 用途 |
|-----|------|------|
| Jest | latest | 测试框架 |
| Swagger | latest | API 文档 |
| class-validator | latest | 数据验证 |
---
## 基础设施
### 容器化
| 技术 | 版本 | 用途 |
|-----|------|------|
| Docker | latest | 容器运行时 |
| Docker Compose | latest | 本地开发环境 |
| Kubernetes | latest | 容器编排 |
### CI/CD
| 技术 | 用途 |
|-----|------|
| GitHub Actions | CI/CD 流水线 |
| 阿里云效 | 国内 CI/CD 备选 |
### 云服务
| 服务 | 用途 |
|-----|------|
| 阿里云 OSS | 对象存储 |
| 阿里云 CDN | 内容分发 |
| 阿里云 RDS | 托管数据库 |
---
## 技术选型理由
### 为什么选择 Next.js
1. **SSR/SSG 支持** - 提升 SEO 和首屏加载速度
2. **App Router** - 现代化的路由架构
3. **API Routes** - 前后端一体化开发
4. **生态成熟** - 国内生态支持良好
5. **类型安全** - 完整的 TypeScript 支持
### 为什么选择 NestJS
1. **企业级框架** - 模块依赖注入、中间件、守卫
2. **TypeScript 优先** - 完整的类型支持
3. **模块化架构** - 易于扩展和维护
4. **生态丰富** - 丰富的插件和模块
### 为什么选择 Prisma
1. **类型安全** - 自动生成类型定义
2. **直观的 Schema** - 简洁的 DSL 语法
3. **强大的迁移工具** - 数据库版本管理
4. **多数据库支持** - PostgreSQL, MySQL 等
### 为什么选择 Monorepo
1. **代码共享** - 前后端共享类型和工具
2. **依赖管理** - 统一的依赖版本
3. **构建优化** - Turborepo 增量构建
4. **团队协作** - 统一的规范和流程
---
## 下一步
- [架构决策记录](./design-decisions/) - 查看 ADR
---
> **文档维护**: 本文档由开发团队维护,如有问题或建议请提交 Issue。
> **最后更新**: 2026-05-25