我正在使用Claude Code。请帮我在F:\projects/下创建一个项目,项目名为snapshot,作用是提供一个临时的文件、文本等的中转服务。其中区分两个文件夹,一个前端项目,使用Vue3编写,一个后端项目,使用Java1.8.0+Spring Boot 2编写。前后端项目由你自己命名。
我对项目的需求如下:
1. 前端页面标题"Snapshot:致力于做最好用的临时文件分享平台"位于最上方居中,下方为一段描述,为使用者描绘使用场景,激发使用者使用的兴趣。再下方,左右分栏,左侧为临时文件上传区域,可上传文件,每个文件不大于50MB,文件列表选择后也可以删除调整和继续上传,列表中最多包含10个文件;右侧为文本输入区域,可以粘贴文本。下方有一个可选的密码设置输入框,再下方有一个统一的"上传"按钮,用于将上面的文件和文本上传至服务器,点击后弹出临时文件有效期选择按钮,可选择1小时、2小时、3小时、6小时、12小时、24小时,也可自定义小时数;同时可以设置文件被打包下载多少次后自动删除文件。再下方是一个上传内容ID输入框,通过输入ID,点击"查看"按钮,可查看自己或他人分享的临时文件和文本,其中文件可以打包下载,也可单个文件下载。
2. 上传完成后,系统自动生成一个分享链接,并显示在页面上,链接格式为"http://ip:port/s/上传内容ID",ip、port可在前端项目的config.js中配置。用户可将链接分享给他人。
3. 在上传内容ID输入框中,输入ID,点击"查看"按钮,也可跳转至对应内容的分享链接。此处为方便用户查阅,若输入框中输入内容只包含ID的前几位,但已经可以通过字典树唯一确定一个上传内容,则也可成功跳转至对应分享链接。
4. 上传过程无需等待,其他用户可在上传者上传完成之前就开始下载;
5. 前端页面背景做成酷炫的银河星空背景,整个页面美观大方;
6. **整个项目需要在Windows项目部署**,我要求部署简单,包含内容简单的前端和后端部署脚本,**不使用docker部署**;
7. **使用Spring boot 2和Java 1.8语法进行后端开发**;
8. 使用MySQL作为数据库,数据库名为snapshot,访问地址为localhost:3306,登录名root,密码"asdqwe123!";**生成名为create.sql的建表语句文件,**在后端服务启动时,若无数据表,则创建,否则不做操作**;
9. 保证整个项目的安全性,杜绝通过网页和接口入侵服务器的漏洞;
10. **在前后端项目编码之前,务必在api目录下生成供前后端交互的RESTful API接口文档,并由我确认**。
# Snapshot项目开发任务说明书
本项目旨在创建一个名为"Snapshot"的临时文件分享平台,包含Vue3前端和Spring Boot 2后端。项目位于F:\projects\snapshot目录,提供安全的临时文件、文本中转服务。
1. 前端技术栈:Vue3 + JavaScript/TypeScript
2. 后端技术栈:Spring Boot 2 + Java 1.8
3. 数据库:MySQL 8.0+,数据库名snapshot,连接地址localhost:3306,用户名root,密码asdqwe123!
4. 部署环境:Windows系统,不使用Docker
5. 文件限制:单个文件≤50MB,最多10个文件
F:\projects\snapshot/
├── frontend/ # Vue3前端项目 (命名为snapshot-frontend)
│ ├── public/
│ ├── src/
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # 可复用组件
│ │ ├── views/ # 页面视图
│ │ ├── router/ # 路由配置
│ │ ├── utils/ # 工具函数
│ │ ├── config.js # 配置文件(IP、端口等)
│ │ └── main.js # 入口文件
│ ├── package.json
│ └── deploy.bat # 前端部署脚本
├── backend/ # Spring Boot后端项目 (命名为snapshot-backend)
│ ├── src/main/java/
│ │ └── com/snapshot/
│ │ ├── Application.java # 启动类
│ │ ├── controller/ # 控制器层
│ │ ├── service/ # 业务逻辑层
│ │ ├── repository/ # 数据访问层
│ │ ├── entity/ # 实体类
│ │ ├── dto/ # 数据传输对象
│ │ ├── config/ # 配置类
│ │ └── util/ # 工具类
│ ├── src/main/resources/
│ │ ├── application.properties # 应用配置
│ │ └── create.sql # 数据库初始化脚本
│ └── deploy.bat # 后端部署脚本
└── README.md # 项目说明文档
## 页面布局与样式要求
1. 顶部标题:居中显示"Snapshot:致力于做最好用的临时文件分享平台",使用大号字体加粗
2. 描述区域:标题下方添加吸引人的使用场景描述,激发使用兴趣
3. 主要内容区:左右分栏布局,左侧文件上传区,右侧文本输入区
4. 底部功能区:密码设置、上传按钮、ID查询区域
5. 背景效果:银河星空动态背景,使用深色主题配合星星、星系动画效果
## 文件上传区域功能
1. 拖拽上传:支持文件拖拽和点击选择两种方式
2. 文件列表:实时显示已选文件列表,包含文件名、大小、上传进度
3. 文件管理:支持删除单个文件、清空全部、重新选择
4. 限制验证:文件大小限制(50MB)、数量限制(10个)、类型提示
5. 实时预览:图片文件支持缩略图预览
## 文本输入区域功能
1. 大文本区域:支持多行文本输入,带行号显示
2. 语法高亮:支持常见编程语言语法高亮
3. 字数统计:实时显示文本长度
4. 自动保存:防止意外丢失输入内容
## 上传配置选项
1. 密码保护:可选密码输入框,支持显示/隐藏密码
2. 有效期选择:下拉选择(1/2/3/6/12/24小时) + 自定义小时数输入
3. 下载次数限制:设置最大下载次数(1-100次)
4. 上传按钮:醒目设计,点击后弹出配置对话框
## 内容查看与下载功能
1. ID输入查询:支持完整ID或前缀模糊匹配(字典树优化)
2. 内容展示:文件列表+文本内容分别展示
3. 下载选项:打包下载所有文件或单个文件下载
4. 分享链接:自动生成格式为"http://ip:port/s/ID"的链接,一键复制
## 交互体验优化
1. 实时反馈:上传进度条、操作成功/失败提示
2. 响应式设计:适配不同屏幕尺寸
3. 加载状态:异步操作时的加载动画
4. 错误处理:友好的错误提示和恢复指导
## 数据库设计
1. 创建snapshot数据库,字符集utf8mb4
2. 主要数据表:
- upload_records: 上传记录表(主键ID、密码哈希、创建时间、过期时间、最大下载次数、当前下载次数)
- file_entries: 文件记录表(文件ID、上传记录ID、文件名、存储路径、文件大小、MIME类型)
- text_contents: 文本内容表(上传记录ID、文本内容、文本类型)
3. 索引优化:为ID前缀查询创建合适索引
## API接口设计
### 文件上传相关
1. POST /api/upload - 创建上传记录
2. POST /api/upload/{id}/files - 分片上传文件
3. GET /api/upload/{id} - 获取上传记录详情
4. DELETE /api/upload/{id} - 删除上传记录(管理员功能)
### 内容访问相关
1. GET /s/{id} - 分享链接访问入口(前端路由)
2. GET /api/content/{id} - 获取分享内容
3. GET /api/download/{fileId} - 下载单个文件
4. GET /api/download/bundle/{id} - 打包下载所有文件
## 核心业务逻辑
1. 文件分片上传:支持大文件断点续传
2. 过期清理机制:定时任务清理过期文件
3. 下载次数统计:达到限制后自动删除
4. ID生成策略:短ID生成,支持前缀匹配
5. 存储优化:文件分目录存储,防止单目录文件过多
## 安全防护措施
1. 文件类型校验:防止恶意文件上传
2. 大小限制验证:防止服务器资源耗尽
3. 频率限制:API调用频率限制
4. XSS防护:输入内容转义处理
5. SQL注入防护:使用参数化查询
6. 路径遍历防护:文件名安全处理
## 前端部署脚本(deploy.bat)
1. 环境检查:验证Node.js和npm版本
2. 依赖安装:npm install安装依赖
3. 构建项目:npm run build生成生产版本
4. 配置服务:使用nginx或简单HTTP服务器
5. 启动服务:指定端口和IP地址
## 后端部署脚本(deploy.bat)
1. 环境检查:Java 1.8验证
2. 数据库初始化:自动执行create.sql
3. 应用打包:Maven打包为可执行JAR
4. 服务启动:后台运行Spring Boot应用
5. 健康检查:验证服务正常启动
## 配置文件示例
### 前端config.js
```javascript
const config = {
baseURL: 'http://localhost:7626',
uploadLimit: 50 * 1024 * 1024, // 50MB
maxFiles: 10,
expirationOptions: [1, 2, 3, 6, 12, 24],
// 可配置的服务器地址
server: {
ip: '127.0.0.1',
port: '7626'
}
};
```
### 后端application.properties
```
server.port=7626
spring.datasource.url=jdbc:
spring.datasource.username=root
spring.datasource.password=asdqwe123!
spring.servlet.multipart.max-file-size=50MB
spring.servlet.multipart.max-request-size=50MB
```
## 开发优先级建议
1. **第一阶段**:搭建项目基础结构,创建数据库表
2. **第二阶段**:实现后端核心API和文件处理逻辑
3. **第三阶段**:开发前端基础界面和组件
4. **第四阶段**:实现前后端联调和交互功能
5. **第五阶段**:添加高级功能(前缀匹配、银河背景等)
6. **第六阶段**:安全加固和部署脚本编写
## 给Claude Code的特别指示
1. **代码风格**:使用清晰的命名规范,添加必要的注释
2. **错误处理**:全面的异常捕获和日志记录
3. **性能优化**:文件上传下载使用流式处理,避免内存溢出
4. **代码复用**:提取公共组件和工具函数
5. **文档完整**:为每个主要函数和组件添加文档注释
请按照以上结构化要求,分别生成前端和后端的完整代码文件,确保项目可以正常运行和部署。