{"id":26875047,"url":"https://github.com/quick-bin/qbin","last_synced_at":"2025-05-07T13:24:53.967Z","repository":{"id":283935566,"uuid":"951259895","full_name":"Quick-Bin/Qbin","owner":"Quick-Bin","description":"✨ 轻盈优雅的全能数据存储服务 | 以编辑器为核心，一键存储文字、代码、图片、视频等任何数据 | 分布式架构+多级缓存让存取速度飞快 | 像记事本般简单，比云盘更便捷，随手记录，即存即用，开启您的云上数据自由时代！","archived":false,"fork":false,"pushed_at":"2025-03-30T12:43:22.000Z","size":855,"stargazers_count":42,"open_issues_count":0,"forks_count":14,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-30T13:25:57.908Z","etag":null,"topics":["deno","docker","pastebin","serverless"],"latest_commit_sha":null,"homepage":"https://qbin.me","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Quick-Bin.png","metadata":{"files":{"readme":"README.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}},"created_at":"2025-03-19T12:03:42.000Z","updated_at":"2025-03-30T13:20:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"0305ae19-89f9-42e2-a09e-5c9878b5b3fe","html_url":"https://github.com/Quick-Bin/Qbin","commit_stats":null,"previous_names":["quick-bin/qbin"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quick-Bin%2FQbin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quick-Bin%2FQbin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quick-Bin%2FQbin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quick-Bin%2FQbin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Quick-Bin","download_url":"https://codeload.github.com/Quick-Bin/Qbin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246450793,"owners_count":20779486,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["deno","docker","pastebin","serverless"],"created_at":"2025-03-31T10:22:12.094Z","updated_at":"2025-05-07T13:24:53.949Z","avatar_url":"https://github.com/Quick-Bin.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eQBin · 一键存储\u003c/h1\u003e\n\n  \u003cimg src=\"https://s3.tebi.io/lite/favicon.svg\" width=\"20%\" alt=\"QBin LOGO\" title=\"QBin LOGO\" /\u003e\n\n  \u003e ✨ 轻量的 Cloud Note \u0026 PasteBin 替代方案，一键保存文本、代码、图片、视频等任意内容，分享更便捷！\n\n  [简体中文] · [**English**](README_EN.md) · [演示站点](https://qbin.me) · [使用文档](Docs/document.md) · [自托管教程](Docs/self-host.md) · [接口文档](Docs/REST%20API.md)\n\u003c/div\u003e\n\n\n## 🖼️ 功能预览\nMobile\n---\n![Mobile photos](https://s3.tebi.io/lite/mobile-preview.jpg)\n\nWindows\n----\n\n![Windows photos](https://s3.tebi.io/lite/windows-preview.jpg)\n\n\n## 📝 项目简介\n\nQBin 专注于「快速、安全、便捷」的在线编辑与内容分享，适合个人笔记、临时存储、多人协作、跨平台分享等多种场景。  \n- 前端全程采用纯 HTML+JS+CSS，无需笨重框架，内置 Monaco 代码编辑器、Cherry Markdown 渲染器、通用编辑器，满足多种内容场景；  \n- 后端选用 Deno Oak 框架 + Drizzle ORM，并结合 Deno KV 与 Edge Cache 多级缓存，让读取与写入都拥有极佳性能；  \n- 内置 PWA 与 IndexedDB 支持，让你在断网下依然可以编辑、保存与预览；  \n- 可自由设置访问路径、密码、有效期，保护隐私的同时实现灵活分享；  \n- 与传统 PasteBin 相比，QBin 提供了更丰富的编辑能力、多层次安全防护和更高扩展性。\n\n## ✨ 项目特性\n\n- 🚀 **极简存储**：轻松保存文字、代码、图片、音视频等任意类型，一键分享\n- 🔒 **安全可控**：支持自定义访问路径和密码保护\n- ⏱️ **灵活期限**：可设置存储有效期，数据过期自动删除\n- 🌓 **明暗切换**：支持深色 / 浅色 / 跟随系统模式，夜间使用更护眼\n- 📱 **PWA 离线**：断网也能编辑、读取本地缓存，随时随地记录与查看 \n- 🔄 **实时保存**：自动定时保存到本地及远程，减少数据丢失风险\n- 🔑 **多种登录**：支持账号密码登录 和 OAuth2（Google、GitHub、Microsoft、自定义）\n- ♻️ **多级缓存**：Deno KV、Drizzle ORM、Edge Cache 与 ETag 结合，提升访问速度\n- ⚡ **一键部署**：支持 Docker Compose、Deno Deploy 等多种场景，轻松自托管\n\n## 🚀 快速使用指南\n\n1. 访问已部署的 QBin 链接 (或本地环境)\n2. 输入默认管理员账号密码\n3. 登录后可在“通用 / Code / Markdown”任意编辑器里输入内容或粘贴、拖放上传文件\n4. 设置链接路径、过期时间、密码保护 (可选)  \n5. 自动保存并生成分享链接或二维码  \n6. 访问链接查看或下载内容 (若有密码则需输入密码)\n\n更多详细用法可参考 [使用指南](Docs/document.md)。\n\n## 🔧 技术栈\n前端:  \n- 纯 HTML + JS + CSS (无第三方框架)  \n- Monaco 代码编辑器 + Cherry Markdown + 通用编辑器  \n\n后端:  \n- Deno Oak 框架\n- Drizzle ORM库，支持PostgreSQL、 SQLite等数据库  \n- Deno KV \u0026 Edge Cache 多级缓存 + ETag 缓存校验  \n\n安全与认证:  \n- JWT + 账号密码  \n- OAuth2 登录 (Google、GitHub、Microsoft、Custom)\n\n## ⚡ 自托管部署\n以下提供了多种一键部署与自定义部署方式。\n\n### Docker Compose (推荐)\n\n```bash\ngit clone https://github.com/Quick-Bin/qbin.git\ncd qbin\ndocker-compose up -d\n```\n\n运行后访问 http://localhost:8000 ，即可开始使用。  \n(默认管理员账号密码可在 docker-compose.yml 内修改)\n\n### 直接使用 Docker\n\n默认 SQLite 本地存储：\n```bash\n# 拉取最新镜像\ndocker pull naiher/qbin:latest\n\n# 启动容器\ndocker run -it -p 8000:8000 \\\n  -e JWT_SECRET=\"your_jwt_secret\" \\\n  -e ADMIN_PASSWORD=\"qbin\" \\\n  -e ADMIN_EMAIL=\"admin@qbin.github\" \\\n  -e DB_CLIENT=\"sqlite\" \\\n  -e ENABLE_ANONYMOUS_ACCESS=\"1\" \\\n  -v ~/qbin-data:/app/src \\\n  naiher/qbin\n```\n\n然后访问 http://localhost:8000 即可。  \n\n### 其他部署方式\n\n支持将 QBin 运行在 Deno Deploy、本地 Deno 环境等更多场景。详见[自托管教程](Docs/self-host.md)。\n\n## 🚀 TODO\n- [ ] 优化编辑器设置面板功能  \n- [ ] 增加存储管理自定义排序功能  \n- [ ] 增加MySQL存储  \n- [ ] 增加Cloudflare D1存储  \n- [ ] 打包为多平台本地程序 \n- [ ] 实现端到端加密  \n- [x] 增加后端本地存储（SQLite数据库） \n- [x] Code高亮、Markdown、音视频、图片预览  \n- [x] 本地离线访问 \n- [x] 个人中心面板  \n- [x] Docker 部署支持  \n- [x] 第三方 OAuth2 登录 (Google / GitHub / Microsoft / Custom)    \n- [x] 多级热 - 冷存储  \n- [x] 移动端 + 浅色 / 深色 / 跟随系统主题适配 \n- [x] ETag 协商缓存 + IndexedDB 本地存储  \n- [x] 自定义存储路径、密码和有效期  \n- [x] 数据自动本地备份 \n\n## 🤝 参与贡献\n\n如果您对这个项目感兴趣，欢迎参与贡献，也欢迎 \"Star\" 支持一下 ^_^ \u003cbr\u003e\n以下为提PR并合并的小伙伴，在此感谢项目中所有的贡献者。\n\n\u003ca href=\"https://github.com/quick-Bin/qbin/graphs/contributors\" target=\"_blank\"\u003e\n  \u003ctable\u003e\n    \u003ctr\u003e\n      \u003cth colspan=\"2\"\u003e\n        \u003cbr\u003e\u003cimg src=\"https://contrib.rocks/image?repo=quick-bin/qbin\"\u003e\u003cbr\u003e\u003cbr\u003e\n      \u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/table\u003e\n\u003c/a\u003e\n\n1. Fork 本项目  \n2. 创建新分支：`git checkout -b feature/amazing-feature`  \n3. 提交更改：`git commit -m \"Add amazing feature\"`  \n4. 推送分支：`git push origin feature/amazing-feature`  \n5. 发起 Pull Request，等待合并\n\n## ❤ 赞助支持\n\n如果 QBin 帮到您或贵团队，欢迎通过[爱发电](https://afdian.com/a/naihe)进行赞助，助力项目持续更新与优化！\n\n\u003ca title=\"QBin Sponsor\" href=\"https://afdian.com/a/naihe\" target=\"_blank\" rel=\"noopener\"\u003e\n  \u003cimg src=\"https://s3.tebi.io/lite/Sponsor.svg\" width=\"25%\" alt=\"QBin Sponsor\" title=\"QBin Sponsor\" /\u003e\n\u003c/a\u003e\n\n## 😘 鸣谢\n特此感谢为本项目提供支持与灵感的项目\n\n- [Cherry Markdown](https://github.com/Tencent/cherry-markdown)\n- [Monaco Editor](https://github.com/microsoft/monaco-editor)\n- [deno_docker](https://github.com/denoland/deno_docker)\n- [drizzle-orm](https://github.com/drizzle-team/drizzle-orm)\n- [bin](https://github.com/wantguns/bin) \n- [excalidraw](https://github.com/excalidraw/excalidraw) \n\n## 许可证\n\n本项目采用 [GPL-3.0](LICENSE) 协议开源，欢迎自由使用与二次开发。  \n让我们共建开放、高效的云上存储与分享新生态！\n\n## History\n\u003ca href=\"https://next.ossinsight.io/widgets/official/analyze-repo-stars-history?repo_id=951259895\" target=\"_blank\" style=\"display: block\" align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://next.ossinsight.io/widgets/official/analyze-repo-stars-history/thumbnail.png?repo_id=951259895\u0026image_size=auto\u0026color_scheme=dark\" width=\"721\" height=\"auto\"\u003e\n    \u003cimg alt=\"Star History of Quick-Bin/qbin\" src=\"https://next.ossinsight.io/widgets/official/analyze-repo-stars-history/thumbnail.png?repo_id=951259895\u0026image_size=auto\u0026color_scheme=light\" width=\"721\" height=\"auto\"\u003e\n  \u003c/picture\u003e\n\u003c/a\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquick-bin%2Fqbin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquick-bin%2Fqbin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquick-bin%2Fqbin/lists"}