Files
record-app-next/README.md
2025-07-31 17:05:07 +08:00

219 lines
4.7 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.

# 录音应用
一个基于 Next.js 的现代化录音应用,支持高质量音频录制、用户认证和录音管理。
## 功能特性
### 🎤 录音功能
- 高质量音频录制WebM 格式)
- 实时音频波形可视化
- 录音进度条显示
- 暂停/继续录音功能
- 录音状态指示器
### 👤 用户管理
- 邮箱/密码登录
- Google OAuth 登录
- 用户个人资料管理
- 应用设置管理
- 安全退出登录
### 📱 用户界面
- 响应式设计,支持桌面和移动设备
- 现代化 UI 设计(参考 Apple 和 More Air
- 自定义音频播放器
- 加载动画和状态指示器
### 🗄️ 数据管理
- SQLite 本地数据库
- Prisma ORM
- 录音文件本地存储
- 录音列表管理(查看、播放、删除)
## 技术栈
- **前端框架**: Next.js 14 (App Router)
- **UI 框架**: Tailwind CSS
- **认证**: NextAuth.js
- **数据库**: SQLite
- **ORM**: Prisma
- **音频处理**: MediaRecorder API, Web Audio API
- **语言**: TypeScript
## 快速开始
### 1. 克隆项目
```bash
git clone <repository-url>
cd record-app
```
### 2. 安装依赖
```bash
npm install
```
### 3. 环境配置
创建 `.env.local` 文件:
```env
# 数据库
DATABASE_URL="file:./dev.db"
# NextAuth
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-secret-key"
# Google OAuth (可选)
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"
```
### 4. 数据库设置
```bash
# 生成 Prisma 客户端
npx prisma generate
# 运行数据库迁移
npx prisma db push
```
### 5. 启动开发服务器
```bash
npm run dev
```
访问 [http://localhost:3000](http://localhost:3000) 查看应用。
## 项目结构
```
record-app/
├── app/ # Next.js App Router
│ ├── api/ # API 路由
│ │ ├── auth/ # 认证相关 API
│ │ ├── recordings/ # 录音管理 API
│ │ └── user/ # 用户管理 API
│ ├── dashboard/ # 主面板页面
│ ├── login/ # 登录页面
│ ├── register/ # 注册页面
│ ├── profile/ # 个人资料页面
│ ├── settings/ # 设置页面
│ └── layout.tsx # 根布局
├── components/ # React 组件
│ ├── AudioRecorder.tsx # 录音组件
│ ├── AudioPlayer.tsx # 音频播放器
│ ├── RecordingList.tsx # 录音列表
│ ├── UserMenu.tsx # 用户菜单
│ ├── Header.tsx # 页面头部
│ └── LoadingSpinner.tsx # 加载动画
├── lib/ # 工具库
│ └── auth.ts # NextAuth 配置
├── prisma/ # 数据库配置
│ └── schema.prisma # 数据库模式
├── public/ # 静态资源
│ └── recordings/ # 录音文件存储
└── types/ # TypeScript 类型定义
```
## 主要功能说明
### 录音功能
- 使用 MediaRecorder API 进行高质量录音
- 实时音频分析,显示波形可视化
- 支持暂停/继续录音
- 录音完成后自动保存到数据库
### 用户认证
- 支持邮箱/密码登录
- Google OAuth 集成
- 安全的会话管理
- 用户资料管理
### 录音管理
- 录音列表显示
- 自定义音频播放器
- 录音下载功能
- 录音删除功能
### 用户管理
- 个人资料编辑
- 应用设置管理
- 主题模式选择
- 账户数据导出
## API 端点
### 认证
- `POST /api/auth/register` - 用户注册
- `POST /api/auth/login` - 用户登录
### 录音管理
- `GET /api/recordings` - 获取录音列表
- `POST /api/recordings/upload` - 上传录音
- `DELETE /api/recordings/[id]` - 删除录音
### 用户管理
- `GET /api/user/profile` - 获取用户资料
- `PUT /api/user/profile` - 更新用户资料
- `GET /api/user/settings` - 获取用户设置
- `PUT /api/user/settings` - 更新用户设置
## 开发指南
### 添加新功能
1.`components/` 目录创建新组件
2.`app/api/` 目录添加相应的 API 路由
3. 更新类型定义文件
4. 测试功能并更新文档
### 数据库修改
1. 修改 `prisma/schema.prisma`
2. 运行 `npx prisma db push` 更新数据库
3. 运行 `npx prisma generate` 更新客户端
### 样式修改
- 使用 Tailwind CSS 类名
- 遵循响应式设计原则
- 保持与现有设计风格一致
## 部署
### Vercel 部署
1. 连接 GitHub 仓库到 Vercel
2. 配置环境变量
3. 部署应用
### 本地部署
1. 构建应用:`npm run build`
2. 启动生产服务器:`npm start`
## 贡献
欢迎提交 Issue 和 Pull Request
## 许可证
MIT License