# 录音应用 一个基于 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 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