Skip to content

目录与架构 ​

仓库结构 ​

app/pages/           # 上传 / 登录 / 管理后台页面
app/components/      # UI 组件(上传面板、复制菜单、文件库等)
app/composables/     # 会话、上传进度、偏好等
server/api/          # Nitro 路由(health、upload、auth、admin…)
server/utils/        # env 绑定、鉴权、设置、文件记录、CORS
shared/utils/        # 前后端共享(如链接格式)
shared/types/        # 环境类型
migrations/          # D1 SQL
wrangler.toml        # Workers / D1 / R2 绑定(本地与部署参考)
docs/                # VitePress 使用说明(本站)

请求路径 ​

  • 页面:Nuxt 路由;/admin/** 关闭 SSR(见 nuxt.config.ts routeRules)。
  • API:server/api/** → /api/**,禁用缓存。
  • 文件读:客户端拿到的是 R2 公网 URL,不经 Worker 反代。

Cloudflare 绑定读取 ​

server/utils/env.ts 统一封装:

  • getDb(event) → env.DB
  • getBucket(event) → env.BUCKET
  • getPublicBaseUrl(event) → R2_PUBLIC_BASE_URL 或 runtimeConfig 回退
  • getMaxUploadBytes(event) → MAX_UPLOAD_BYTES 或 runtimeConfig 回退
  • getMaxVideoUploadBytes(event) → MAX_VIDEO_UPLOAD_BYTES 或 runtimeConfig 回退
  • getStorageQuotaBytes(event) → STORAGE_QUOTA_BYTES 或 runtimeConfig 回退(默认 10GB)

未绑定资源时抛出 503,便于本地未配置时快速发现问题。

鉴权分层 ​

场景机制
上传 / 目录联想登录会话(requireUploadAuth → requireUserSession)
管理 API管理员会话(requireAdminSession)
页面 /、/admin/**前端 auth / admin middleware
首次初始化users 为空时允许 bootstrap

构建产物 ​

pnpm build 使用 Nitro preset cloudflare_module,产物在 .output/。
pnpm deploy 在 .output 目录执行 wrangler deploy。

基于 MIT 许可发布