项目结构
EdgeChat 采用前后端分离的 Monorepo 结构,核心代码主要分为 frontend/ 和 worker/。
text
cfchat/
├─ frontend/ # Vue 前端
│ ├─ src/
│ │ ├─ demo/ # 浏览器内存模拟后端
│ │ └─ runtime.js # 生产运行时适配器
│ ├─ vite.config.js
│ └─ vite.demo.config.js
├─ worker/ # Cloudflare Worker 后端
│ ├─ src/
│ ├─ migrations/
│ └─ schema.sql
├─ android/ # 暂时弃用的 Kotlin + Jetpack Compose 原生客户端
│ └─ app/ # 单模块应用,按 core/feature/ui 分包
├─ capacitor/ # 当前主要发行的 Capacitor Android 客户端,内置 Vue Web UI
│ └─ android/ # 少量 Kotlin:文件选择、通知和系统跳转
├─ docs/api/ # OpenAPI 3.1 与 WebSocket v1 契约
├─ .github/
│ └─ workflows/
│ ├─ deploy-worker.yml
│ ├─ deploy-demo.yml
│ ├─ android-ci.yml
│ ├─ capacitor-android-ci.yml
│ └─ android-release.yml
├─ wrangler.toml
├─ wrangler.demo.toml
├─ package.json
└─ README.md关键目录
frontend/src/:页面、路由、状态和 WebSocket 相关逻辑worker/src/:认证、数据库、接口和 Durable Objectsworker/schema.sql:D1 初始结构android/app/:暂时弃用的原生 Android 应用,保留 Room、WorkManager 与 Compose 实现供验证capacitor/:当前主要发行版,打包 Vue 前端并允许用户填写自托管服务地址docs/api/:移动 HTTP 和 WebSocket 的版本化协议契约.github/workflows/deploy-worker.yml:GitHub Actions 部署流程frontend/src/demo/:纯前端 demo 的 fixtures、内存 API 和模拟实时连接.github/workflows/deploy-demo.yml:只手动触发的独立 demo 部署流程.github/workflows/android-ci.yml:Android 单元测试、Lint 与 Debug APK 构建.github/workflows/capacitor-android-ci.yml:Capacitor Web 构建、Android 单元测试、Lint 与 Debug APK 构建.github/workflows/android-release.yml:主要 Capacitor 客户端的签名 APK/AAB、校验文件与 GitHub Releasewrangler.demo.toml:不绑定数据资源的 demo 静态 Worker 配置
资源分工
- D1:用户、群组、成员关系、消息
- KV:登录会话
- R2:文件和头像
- Durable Objects:实时房间
群组永久删除会立即清理 D1 中的群组、消息、成员、已读及关联投影;附件 key 进入既有 pending_r2_delete 队列,由定时 GC 核对引用后分批清理 R2 与 uploaded_files。general 系统群不受影响。
