使用 Everything Skill 构建的全功能网盘系统。
- 用户认证: 注册、登录、JWT token 验证
- 文件上传: 支持分片上传、断点续传、进度显示
- 文件管理: 文件夹创建、文件移动、重命名、删除
- 文件下载: 支持断点续传
- 文件分享: 生成分享链接、密码保护
- 存储配额: 用户存储空间管理
- 回收站: 软删除和恢复功能
- 框架: Next.js 14 (App Router)
- 语言: TypeScript
- 数据库: PostgreSQL + Prisma ORM
- 缓存: Redis
- 认证: NextAuth.js
- 样式: Tailwind CSS
- 测试: Vitest + Playwright
cloud-drive/
├── app/ # Next.js App Router
│ ├── api/ # API Routes
│ │ ├── auth/ # 认证 API
│ │ ├── files/ # 文件管理 API
│ │ └── upload/ # 上传 API
│ ├── drive/ # 网盘主界面
│ └── layout.tsx # 根布局
├── components/ # React 组件
│ └── file-manager/ # 文件管理组件
├── lib/ # 工具库
│ ├── auth.ts # 认证相关
│ ├── db.ts # 数据库
│ ├── storage.ts # 文件存储
│ └── validation.ts # 验证 schema
├── prisma/ # Prisma 配置
│ └── schema.prisma # 数据库模型
└── types/ # TypeScript 类型
- id, email, name, password
- 关联: files, folders, shares, quota
- userId, totalSpace, usedSpace
- 默认 10GB 空间
- id, name, parentId (自关联)
- 支持无限层级嵌套
- id, name, size, mimeType, storagePath
- isDeleted, deletedAt (软删除)
- 关联: folder, user, shares
- id, fileId, userId, token
- password, expiresAt, maxDownloads
- downloadCount, isActive
cd cloud-drive
npm installcp .env.local.example .env.local
# 编辑 .env.local 填入你的配置npx prisma migrate dev --name init
npx prisma generatenpm run dev打开 http://localhost:3000/drive
POST /api/auth/register- 用户注册POST /api/auth/login- 用户登录POST /api/auth/logout- 用户登出
GET /api/files- 获取文件列表GET /api/files/[id]/download- 下载文件DELETE /api/upload?fileId=- 删除文件
POST /api/upload- 分片上传文件
- 前端将文件切分为 1MB 的 chunks
- 每个 chunk 单独上传,支持断点续传
- 后端保存 chunks 到临时目录
- 最后一个 chunk 上传后合并所有 chunks
- 创建数据库记录并更新存储配额
- 文件存储在
uploads/{userId}/{fileId} - 支持本地文件系统和 S3 兼容存储
- 软删除机制保护误删文件
- 密码 bcrypt 加密存储
- JWT token 认证
- 文件类型验证
- 存储配额服务端校验
- 用户数据隔离
npm testnpm run test:e2enpm run test:coveragedocker-compose up -dvercel --prod本项目使用 Everything Skill 遵循以下流程开发:
- 规划阶段: 使用
/plan制定详细的项目架构 - 数据库设计: 使用 TDD 方式设计 Prisma schema
- 后端开发:
- 使用
/tdd开发 API (测试优先) - 使用
/code-review审查代码
- 使用
- 前端开发:
- 使用
/tdd开发组件 - 使用
/e2e生成端到端测试
- 使用
- 集成测试:
- 使用
/verify验证完整功能 - 使用
/orchestrate feature编排测试流程
- 使用
- 文件夹分享
- 文件版本历史
- 图片/视频预览
- 拖拽上传
- 批量操作
- 回收站自动清理
- 文件搜索
- 移动端适配
欢迎提交 PR 和 Issue!
MIT
使用 Everything Claude Code Skill 构建 🚀