模块概览
项目中核心模块的详细说明
模块概述
VideoFly 采用模块化设计,所有功能模块都组织在 src/ 目录下。
核心模块
1. AI 提供商抽象层 (src/ai/)
统一的 AI 视频生成提供商接口,支持多个 AI 服务。
使用方法
支持的提供商
| 提供商 | 文生视频 | 图生视频 | 模型 |
|---|---|---|---|
| Evolink.ai | ✅ | ✅ | sora-2, wan2.6, veo-3.1, seedance-1.5-pro |
| Kie.ai | ✅ | ❌ | sora-2-text-to-video |
2. 服务层 (src/services/)
业务逻辑的核心层,封装了所有复杂的业务操作。
| 模块 | 文件 | 职责 |
|---|---|---|
| 积分服务 | credit.ts | 积分冻结、结算、释放、充值 |
| 视频服务 | video.ts | 视频生成、状态查询、回调处理 |
| 客户服务 | customer.ts | 客户数据管理 |
| 账单服务 | billing.ts | 订阅和支付账单管理 |
| K8s 服务 | k8s.ts | K8s 集群管理 |
积分服务示例
3. 数据层 (src/db/)
使用 Drizzle ORM 的数据库层。
使用方法
4. 配置层 (src/config/)
所有配置文件的集中管理。
| 配置文件 | 用途 |
|---|---|
site.ts | 站点基本信息 |
navigation.ts | 导航菜单配置 |
i18n-config.ts | 国际化语言配置 |
credits.ts | 积分和模型配置 |
price/ | 定价配置 |
tool-pages/ | 工具页面配置 |
ui/ | UI 相关配置 |
积分配置示例
5. 工具库 (src/lib/)
通用工具函数和辅助模块。
| 模块 | 文件 | 职责 |
|---|---|---|
| API 工具 | api/ | API 响应格式化、认证中间件 |
| 验证 | validations/ | Zod 验证模式 |
| 类型 | types/ | TypeScript 类型定义 |
| 存储 | storage.ts | R2/S3 存储抽象 |
| 视频 API | video-api.ts | 视频 API 客户端 |
| 邮件 | emails/ | 邮件模板和发送 |
存储服务示例
6. Hooks (src/hooks/)
自定义 React Hooks,封装可复用的状态逻辑。
| Hook | 用途 |
|---|---|
useVideoGeneration | 视频生成状态管理 |
useCreditBalance | 积分余额查询 |
useUserVideos | 用户视频列表 |
useBreakpoint | 响应式断点 |
使用示例
7. 状态存储 (src/stores/)
使用 Zustand 的客户端状态管理。
组件模块
视频生成器组件 (src/components/video-generator/)
核心的视频生成输入组件。
| 组件 | 文件 | 用途 |
|---|---|---|
VideoGeneratorInput | video-generator-input.tsx | 主输入组件 |
VideoGeneratorCore | video-generator-core.tsx | 核心逻辑 |
VideoStatusCard | video-status-card.tsx | 状态卡片 |
VideoCard | video-card.tsx | 视频卡片 |
CompactGenerator | compact-generator.tsx | 紧凑版 |
使用方法
UI 组件库 (src/components/ui/)
基于 shadcn/ui 的基础组件库,包含 50+ 组件:
- Button
- Input
- Textarea
- Select
- Checkbox
- Radio Group
- Switch
- Slider
- Date Picker
国际化模块 (src/messages/)
使用 next-intl 实现中英文双语。
添加翻译
样式系统 (src/styles/)
Tailwind CSS
项目使用 Tailwind CSS 4.0,支持以下特性:
- 深色模式 - 基于
darkMode: 'class' - 自定义主题 - 在
tailwind.config.ts中配置 - CSS 变量 - 使用 HSL 颜色空间