diff --git a/architecture/technical.md b/architecture/technical.md new file mode 100644 index 0000000..b84c1cb --- /dev/null +++ b/architecture/technical.md @@ -0,0 +1,52 @@ +# 技术方案 + +## 技术选型 + +### 前端 +- Electron 28+ +- React 18 +- TypeScript 5 +- Zustand (状态管理) +- Ant Design 5 +- electron-builder (打包) + +### 后端 +- Node.js 20+ +- Express 4 +- SQLite3 (本地) / MySQL (云端) +- JWT (认证) +- Multer (文件上传) + +## 目录结构 + +``` +clouddisk-project/ +├── frontend/ # Electron 前端 +│ ├── src/ +│ │ ├── main/ # 主进程 +│ │ ├── renderer/ # 渲染进程 +│ │ ├── components/ +│ │ ├── pages/ +│ │ └── stores/ +│ └── package.json +│ +├── backend/ # Node.js 后端 +│ ├── src/ +│ │ ├── controllers/ +│ │ ├── models/ +│ │ ├── routes/ +│ │ ├── middleware/ +│ │ └── utils/ +│ └── package.json +│ +└── tests/ # 测试代码 + ├── frontend/ + ├── backend/ + └── e2e/ +``` + +## 安全方案 +1. HTTPS 传输加密 +2. JWT Token 认证 +3. 文件哈希校验 +4. 分享链接过期机制 diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 0000000..79c6cb2 --- /dev/null +++ b/backend/README.md @@ -0,0 +1,20 @@ +# CloudDisk Backend + +## 开发指南 + +### 安装 +```bash +npm install +``` + +### 启动 +```bash +npm start +``` + +### API 端点 +- POST /api/auth/login +- POST /api/auth/register +- GET /api/files +- POST /api/files/upload +- DELETE /api/files/:id diff --git a/backend/package.json b/backend/package.json new file mode 100644 index 0000000..f29e2e1 --- /dev/null +++ b/backend/package.json @@ -0,0 +1,23 @@ +{ + "name": "clouddisk-backend", + "version": "1.0.0", + "description": "CloudDisk Node.js Backend", + "main": "src/index.js", + "scripts": { + "start": "node src/index.js", + "dev": "nodemon src/index.js", + "test": "jest" + }, + "dependencies": { + "express": "^4.18.0", + "sqlite3": "^5.1.0", + "jsonwebtoken": "^9.0.0", + "multer": "^1.4.5", + "bcrypt": "^5.1.0", + "cors": "^2.8.5" + }, + "devDependencies": { + "nodemon": "^3.0.0", + "jest": "^29.7.0" + } +} diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..b317fc1 --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,18 @@ +# CloudDisk Frontend + +## 开发指南 + +### 安装 +```bash +npm install +``` + +### 开发模式 +```bash +npm run dev +``` + +### 构建 +```bash +npm run build +``` diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..fa9ed2d --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,22 @@ +{ + "name": "clouddisk-frontend", + "version": "1.0.0", + "description": "CloudDisk Electron Frontend", + "main": "dist/main/index.js", + "scripts": { + "dev": "electron .", + "build": "electron-builder", + "test": "jest" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0", + "zustand": "^4.4.0", + "antd": "^5.12.0" + }, + "devDependencies": { + "electron": "^28.0.0", + "electron-builder": "^24.9.0", + "typescript": "^5.3.0" + } +} diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..d284630 --- /dev/null +++ b/tests/README.md @@ -0,0 +1,36 @@ +# CloudDisk 测试计划 + +## 测试策略 + +### 1. 单元测试 +- 前端: Jest + React Testing Library +- 后端: Jest + +### 2. 集成测试 +- API 测试: Supertest + +### 3. E2E 测试 +- Playwright + +## 测试用例 + +### 登录模块 +- [ ] 正确账号密码登录成功 +- [ ] 错误密码登录失败 +- [ ] 空账号登录提示错误 + +### 文件管理 +- [ ] 文件上传成功 +- [ ] 文件下载成功 +- [ ] 文件删除成功 +- [ ] 文件夹创建成功 + +### 分享功能 +- [ ] 生成分享链接 +- [ ] 通过分享链接访问 +- [ ] 密码保护分享 + +## 运行测试 +```bash +npm test +``` diff --git a/ui-design/designs/colors.md b/ui-design/designs/colors.md new file mode 100644 index 0000000..b31f0de --- /dev/null +++ b/ui-design/designs/colors.md @@ -0,0 +1,19 @@ +# 设计规范 - 色彩系统 + +## 主色调 +- 主色: #1890FF (蓝色) +- 主色悬停: #40A9FF +- 主色按下: #096DD9 + +## 中性色 +- 背景色: #FFFFFF +- 背景色(深): #F5F5F5 +- 边框色: #D9D9D9 +- 文字主色: #262626 +- 文字次色: #8C8C8C + +## 功能色 +- 成功: #52C41A +- 警告: #FAAD14 +- 错误: #FF4D4F +- 信息: #1890FF diff --git a/ui-design/mockups/login-page.md b/ui-design/mockups/login-page.md new file mode 100644 index 0000000..6629f75 --- /dev/null +++ b/ui-design/mockups/login-page.md @@ -0,0 +1,24 @@ +# 登录页 - 低保真原型 + +## 页面布局 +``` +┌─────────────────────────────────┐ +│ │ +│ [Logo] CloudDisk │ +│ │ +│ 用户名: [____________] │ +│ 密码: [____________] │ +│ │ +│ [ ] 记住密码 │ +│ │ +│ [ 登录 ] [ 注册 ] │ +│ │ +│ 登录即表示同意服务条款 │ +└─────────────────────────────────┘ +``` + +## 交互说明 +- 输入框获得焦点时,显示蓝色边框 +- 登录按钮点击后,显示加载状态 +- 错误信息显示在表单底部,红色文字 +- 60秒无操作返回登录页