exocore-docs / docs /cloud /README.md
ChoruYt's picture
Upload 151 files
dc2b30a verified
|
Raw
History Blame Contribute Delete
3.31 kB

Cloud Backups — Google Drive integration

Exocore mirrors all panel state to a private folder on the owner's Google Drive so that you can wipe / re-deploy the server and restore everything in seconds. The client side lives in home/GDriveManager.tsx (modal opened from the dashboard's ☁ Cloud Backups quick action) plus editor/GDrivePane.tsx (Drive sidebar inside the IDE).

What gets synced

Backend file What it stores
Exocore-Backend/local-db/users.enc All user accounts (encrypted at rest)
Exocore-Backend/local-db/posts.json Public posts feed
Exocore-Backend/local-db/dms.* Direct messages
Exocore-Backend/local-db/global-chat.json Global chat backlog
Exocore-Backend/local-db/token.enc OAuth bootstrap
client/access/devs.json Panel-devs master account

A background loop in Exocore-Backend/src/services/drive.ts checks every 60 s, uploads diffs, and emits cache-restore events on boot ([cache] restoring from Drive…).

Manager modal — desktop / mobile

Opened from Dashboard → Quick Actions → Cloud Backups. Sections:

┌─ Connected account ──────────────┐
│  📷 Google avatar  email · plan  │
│  Disk used: 4.2 GB / 15 GB        │
│  [ Re-authorize ]  [ Disconnect ] │
├─ Sync status ────────────────────┤
│  ✅ users.enc        2 s ago      │
│  ✅ posts.json       2 s ago      │
│  🔄 dms.*            uploading…   │
│  ⚠️ tokens.enc       error: …     │
├─ Manual actions ─────────────────┤
│  [ ⬆ Force upload ]  [ ⬇ Pull now ]│
│  [ 🗑 Reset cloud cache ]          │
└──────────────────────────────────┘

(Same dashboard capture applies — the modal opens on top of it once a user is authenticated.)

Desktop Mobile
Dashboard — desktop Dashboard — mobile

OAuth flow

  1. User clicks Connect Google Drive → server redirects to Google's consent screen with the drive.file scope.
  2. Google redirects back to /exocore/api/oauth/google/callback.
  3. Server exchanges the code, encrypts + writes the refresh token to Exocore-Backend/local-db/token.enc.
  4. Sync loop boots and walks the EXOCORE_BACKUPS parent folder.

RPC + HTTP touchpoints

Channel / route Purpose
RPC drive.status Connected account + per-file last-sync ts
RPC drive.sync Force a full upload pass
RPC drive.pull Replace local cache with Drive copy
RPC drive.disconnect Revoke + clear local token
HTTP POST /exocore/api/editor/gdrive/* IDE-side file picker (proxied to backend Drive scope)