Picumet
多云对象存储管理平台 — 统一文件管理、细粒度权限、分享链接与 PicGo/PicList 接入,运行在 Cloudflare 边缘网络。
前往 GitHub 仓库 查看源码和部署说明。
Picumet 是一个多云对象存储管理平台。提供统一的文件管理界面和细粒度权限控制,支持分享链接与 PicGo/PicList 接入,整体运行在 Cloudflare 边缘网络。
- 认证:注册、登录(HttpOnly Cookie + JWT)、邮箱验证、密码找回。
- 权限:管理员/用户/访客三级角色、路径级 ACL、文件与路径密码。
- 文件:卡片/列表视图、单文件与分片上传、断点续传、硬删除、重命名、移动(Saga)、批量操作、搜索、排序。
- 预览:图片缩放/旋转、视频/音频播放、代码高亮(highlight.js,预先转义)。文件卡片带视频缩略图和文件夹内部预览。
- 复制链接:多文件弹窗,支持直链/HTML/Markdown/BBCode,公开直链或签名直链。
- 分享:密码、过期时间、下载次数限制、公开页、二维码。
- 外观:浅色/深色/跟随系统、强调色(动态前景色)、模糊效果、图片/URL 背景、文件夹显示开关、自定义文件 emoji。
- API 密钥:
pk_x.sk_y不透明令牌(只存哈希)、IP 白名单、WebDAV Basic 认证、PicGo 上传接口/api/upload。 - 管理后台:仪表板、用户、配额、存储源、挂载点、权限规则、分享、文件、日志、系统设置。
- 自由模式:用户自带对象存储凭据的临时会话,凭据用 AES-256-GCM 加密写入 KV,短 TTL。
- 安全:CSP、CSRF Token、速率限制(fail-closed)、路径遍历防护、危险文件拦截、SSRF 校验、SQL 参数化、下载令牌原子消费。
按业务领域组织代码,不按技术层次。
- 后端业务代码放在
workers/src/services/<domain>/,每个服务自包含handlers.ts、schemas.ts、types.ts、领域逻辑和README.md。index.ts只负责路由与中间件装配。 - 所有服务依赖权限服务做鉴权,依赖存储服务访问对象,避免循环依赖。
- 中间件(
auth、csrf、rate-limit)、数据层(db/repos/)、工具(utils/)和公共契约(shared/)属于薄基础设施层,不承载业务。 - 前端遵循同样规则。
pages/每个路由一个页面,页面内的子功能收进components/files/和components/layout/,components/ui/只放可复用的 UI 原语。
picumet/├── assets/logo.svg # 品牌标识├── frontend/ # React 应用(Vite + TypeScript + Tailwind)│ └── src/│ ├── pages/ # 每个路由一个页面│ ├── components/ # files/ · layout/ · ui/│ ├── lib/ # api · utils · i18n│ └── stores/ # theme · auth · site├── workers/ # Cloudflare Workers API(Hono + D1/KV/R2)│ └── src/│ ├── services/ # auth · files · uploads · shares · storage · webdav · ...│ ├── middleware/ # auth · csrf · rate-limit · global│ ├── db/repos/ # D1 数据访问层│ ├── utils/ # path · crypto · ssrf · smtp│ └── shared/ # schemas · types · errors · response├── shared/ # 前后端共享类型└── docs/ # 文档| 指南 | 内容 |
|---|---|
| 系统架构 | 服务设计、数据模型、安全设计。 |
| API 参考 | 认证、全部端点、错误码。 |
| 前端指南 | 路由、布局、响应式、无障碍。 |
| 开发指南 | 本地环境、测试、代码规范。 |
| 部署指南 | Cloudflare 部署、CI、密钥管理。 |
| 实施进度 | 范围、状态、审计闭环。 |