hzhang 58badf328c feat(guild): file upload/retention + channel canvas
Files:
- StoredFile entity + FilesModule: multipart upload (configurable
  FABRIC_BACKEND_GUILD_FILE_MAX_BYTES, default 100MB; no type limit),
  authenticated download (Bearer or ?access_token=), hourly + on-boot
  retention sweep (FABRIC_BACKEND_GUILD_FILE_TTL_DAYS, default 7).
- ApiKeyGuard also accepts ?access_token= (browser <img>/<a>).

Canvas:
- ChannelCanvas entity (one active per channel) + CanvasModule:
  GET / PUT|POST (share-replace, caller becomes sharer) /
  PATCH (sharer-only in-place update, version++) / DELETE (sharer-only).
  Emits canvas.updated / canvas.removed to the channel room.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 20:17:02 +01:00
2026-05-15 18:47:36 +01:00
2026-05-15 18:47:36 +01:00

Fabric.Backend.Guild

Guild Node service for Fabric.

Scope (MVP)

  • Workspace/Guild/Channel/DM
  • Message create/edit/delete/reply/@mention
  • Per-channel/DM seq ordering + gap backfill API
  • Webhook/Bot integration surface
  • Guild-level audit logs

Next

  • API skeleton (NestJS)
  • Chat domain models
  • Seq allocator and range query endpoints

Required env (startup hard checks)

  • FABRIC_BACKEND_GUILD_CENTER_BASE_URL
  • FABRIC_BACKEND_GUILD_CENTER_API_KEY
  • FABRIC_BACKEND_GUILD_NODE_ID

If any of the above is missing, service startup fails immediately.

Description
No description provided
Readme 483 KiB
Languages
TypeScript 99.3%
JavaScript 0.4%
Dockerfile 0.3%