{"id":35507294,"url":"https://github.com/keven1024/015","last_synced_at":"2026-04-06T06:03:44.280Z","repository":{"id":303339140,"uuid":"1010867051","full_name":"keven1024/015","owner":"keven1024","description":"015 is a self-hosted temporary file sharing platform. Focused on providing one-time, temporary file and text upload, processing, and sharing services.","archived":false,"fork":false,"pushed_at":"2026-03-09T03:33:18.000Z","size":18635,"stargazers_count":323,"open_issues_count":5,"forks_count":30,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-09T09:04:42.096Z","etag":null,"topics":["file-sharing","file-upload","firefox-send","upload"],"latest_commit_sha":null,"homepage":"https://send.fudaoyuan.icu","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keven1024.png","metadata":{"files":{"readme":"README-zh.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-30T00:34:13.000Z","updated_at":"2026-03-09T03:33:22.000Z","dependencies_parsed_at":"2025-07-07T05:35:08.919Z","dependency_job_id":"779b1aa9-632d-4ebe-bf6e-6d39d8c01439","html_url":"https://github.com/keven1024/015","commit_stats":null,"previous_names":["keven1024/015"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/keven1024/015","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keven1024%2F015","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keven1024%2F015/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keven1024%2F015/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keven1024%2F015/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keven1024","download_url":"https://codeload.github.com/keven1024/015/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keven1024%2F015/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31461534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["file-sharing","file-upload","firefox-send","upload"],"created_at":"2026-01-03T20:02:09.114Z","updated_at":"2026-04-06T06:03:44.275Z","avatar_url":"https://github.com/keven1024.png","language":"Vue","funding_links":[],"categories":["Vue"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n# 015\n\n015 (/ˈzɪərəʊ wʌn faɪv/, \"zero-one-five\") 是一个支持selfhosted的临时文件分享平台。专注于提供一次性，临时的文件和文本上传，处理，分享服务。项目名称来源于DARLING in the FRANXX的 [莓](https://darling-in-the-franxx.fandom.com/wiki/Ichigo)\n\n一个基于 Vue 3 + Nuxt 3 + Go 构建的现代文件分享网站，支持文件上传、文本分享、图片压缩、并发处理、秒传功能等，具备完整的分享管理和访问控制体系。\n\n![015 Platform Overview](/.github/image/0.png)\n\n[English](README.md) | 中文\n\n\u003c/div\u003e\n\n## 🌟 功能特性\n\n### 核心功能\n\n🖼️ **高性能文件上传** - 支持大文件切片上传，前端计算文件哈希实现秒传  \n📱 **响应式设计** - 基于 Tailwind V4 + Reka UI 的现代化 UI，适配各种设备  \n⚡ **并发处理** - 使用 Web Worker 进行前端Hash计算，后端队列系统处理任务  \n🌐 **多语言支持** - 完整的中英文国际化支持  \n🔗 **分享管理** - 灵活的分享链接生成和管理系统\n\n### 文件处理\n\n🔄 **智能秒传** - 基于文件哈希+文件大小的前端秒传检测，避免重复上传  \n📷 **图片压缩** - 自动图片压缩功能，支持多种格式  \n🖼️ **文件预览** - 支持图片、视频、音频、文档等多种文件类型预览  \n📊 **上传统计** - 实时显示上传进度和文件信息  \n🌈 **断点续传** - 支持上传中断后的续传功能\n\n### 高级功能\n\n🎛️ **分享控制** - 支持密码保护、下载次数限制、过期时间设置  \n🔍 **取件码系统** - 支持取件码分享，简化分享难度  \n⚡ **队列处理** - 基于 Redis + Asynq 的异步任务处理系统  \n🗂️ **文件管理** - 完整的文件生命周期管理  \n📷 **图片处理** - 图片压缩、格式转换等处理功能  \n🏷️ **下载控制** - 基于 JWT 的下载令牌管理系统\n\n## 📸 截图预览\n\n| 选择文件上传页面                                   | 输入文本上传页面                                          |\n|---------------------------------------|-----------------------------------------------|\n| ![](/.github/image/1.png) | ![](/.github/image/2.png) |\n\n| 多选文件上传                                           | 文件上传进度热力图                                              |\n|------------------------------------------------|---------------------------------------------------|\n| ![](/.github/image/3.png) | ![](/.github/image/4.png) |\n\n| 文件上传进度条                                           | 文件上传成功页面                                           |\n|------------------------------------------------|-------------------------------------------------|\n| ![](/.github/image/5.png) | ![](/.github/image/6.png) |\n\n## 🚀 快速开始\n\n### Docker\n\n1. 下载文件\n    - config.example.yaml\n    - docker-compose.yml\n\n2. 把config.example.yaml配置完成后改为config.yaml\n\n\n3. 启动\n```bash\ndocker compose up -d\n```\n\n\n## 🚀 快速开始\n\n### Docker\n\n1. 下载文件\n    - config.example.yaml\n    - docker-compose.yml\n\n2. 把config.example.yaml配置完成后改为config.yaml\n\n\n3. 启动\n```bash\ndocker compose up -d\n```\n\n\n## 🏗️ 技术架构\n\n### 前端技术栈\n\n- **Vue 3** - 渐进式 JavaScript 框架\n- **Nuxt 3** - Vue.js 全栈框架\n- **TypeScript** - 完整的类型安全\n- **Tailwind CSS** - 原子化 CSS 框架\n- **Reka UI** - 现代化组件库\n- **Pinia** - 状态管理\n- **TanStack Query** - 数据获取和缓存\n- **Vue Router** - 路由管理\n- **i18next** - 国际化支持\n\n### 后端技术栈\n\n- **Go 1.23** - 高性能服务器端语言\n- **Echo** - 高性能 HTTP 框架\n- **Redis** - 缓存和会话存储\n- **Asynq** - 异步任务队列\n- **JWT** - 身份验证\n- **Zap** - 结构化日志\n\n### 构建系统\n\n- **Node.js** - 服务器端运行时\n- **pnpm** - 快速包管理器\n- **Husky** - Git hooks 管理\n- **Prettier** - 代码格式化\n- **Lint-staged** - 暂存文件检查\n\n### 存储架构\n\n- **文件存储** - 本地文件系统存储\n- **Redis 缓存** - 分享信息、文件元数据缓存\n- **队列系统** - 异步任务处理队列\n\n## 📁 项目结构\n\n```\n015/\n├── front/                 # 前端应用 (Vue 3 + Nuxt 3)\n│   ├── components/       # Vue 组件\n│   │   ├── pages/           # 页面路由\n│   │   ├── composables/     # 组合式函数\n│   │   ├── i18n/           # 国际化文件\n│   │   └── assets/         # 静态资源\n│   └── middleware/     # 中间件\n├── backend/             # 后端服务 (Go + Echo)\n│   ├── internal/       # 内部包\n│   │   ├── controllers/ # 控制器\n│   │   ├── models/     # 数据模型\n│   │   ├── services/   # 业务逻辑\n│   │   └── utils/      # 工具函数\n│   └── middleware/     # 中间件\n├── worker/             # 异步任务处理 (Go + Asynq)\n│   ├── internal/       # 内部包\n│   │   ├── tasks/      # 任务处理器\n│   │   └── utils/      # 工具函数\n│   └── middleware/     # 中间件\n└── tmp/               # 临时文件\n```\n\n## 🔧 开发指南\n\n### 代码规范\n\n- 使用 Prettier 进行代码格式化\n- 使用 Husky + lint-staged 进行提交前检查\n- 遵循 TypeScript 类型安全规范\n\n### 提交规范\n\n```bash\n# 提交前会自动运行代码格式化\ngit add .\ngit commit -m \"feat: add new feature\"\n```\n\n### 构建部署\n\n```bash\n# 构建前端\ncd front \u0026\u0026 pnpm run build\n\n# 构建后端 (需要 Go 环境)\ncd backend \u0026\u0026 go build -o main .\n\n# 构建 Worker\ncd worker \u0026\u0026 go build -o worker .\n```\n\n## 📝 开发计划\n\n### 已完成功能 ✅\n\n- 前端计算哈希和秒传\n- 并发切片上传 (使用 Web Worker)\n- 文件上传/文本上传和分享\n- 上传统计页面\n- 多语言支持\n- 最大上传限制\n- 后端队列系统和 Worker 处理文件\n\n### 计划功能 🚧\n\n- 断点续传 (后端计算已上传部分并返回)\n- 图片格式转换和压缩\n- 图片 OCR 复制\n- 文档转 Markdown\n- 文本翻译/总结\n- 支持上传多文件\n\n## 🤝 贡献指南\n\n欢迎提交 Issue 和 Pull Request 来改进这个项目。\n\n## 📄 许可证\n\n本项目采用 AGPLV3 许可证。\n\n## 🔗 相关链接\n\n- [Vue 3 文档](https://vuejs.org/)\n- [Nuxt 3 文档](https://nuxt.com/)\n- [Echo 框架文档](https://echo.labstack.com/)\n- [Asynq 文档](https://github.com/hibiken/asynq)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeven1024%2F015","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeven1024%2F015","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeven1024%2F015/lists"}