05 — Collaboration Features
File sync is solitary; collaboration is where a vault becomes a workspace. The headline is bounded real-time co-editing (CRDTs) — which deliberately revisits a non-goal — surrounded by lighter, high-value social features.
C1 — CRDT Co-editing for Docs & Notes ⭐ near-flagship
Real-time multi-user editing of text / Markdown / structured notes (not arbitrary binary), conflict-free, offline-capable.
flowchart TB
classDef c fill:#c7d2fe,stroke:#3730a3,color:#111827;
classDef s fill:#bbf7d0,stroke:#15803d,color:#111827;
a["Editor A (Yjs doc)"]:::c -->|"binary updates (state-vector sync)"| relay["BitVault relay (over event/WebSocket)"]:::s
b["Editor B (Yjs doc)"]:::c -->|updates| relay
relay --> conv["strong eventual consistency: all converge"]:::s
relay -->|"checkpoint"| ver["persist CRDT state → a BitVault version (storage/07)"]:::s
- Design: a sequence CRDT (Yjs, or Loro for perf) per collaborative doc; clients exchange compact binary updates via a relay over our event/sync channels (sync/07); periodic checkpoints persist the CRDT state as a normal BitVault version (storage/07), so co-edited docs still live in the file tree with history.
- Revisits NG1 deliberately: the original non-goal was real-time co-editing. We scope it to text/structured docs only (where CRDTs shine), keep whole-file binary on the conflicted-copy model (ADR-0008) — co-editing a video makes no sense. Honest, bounded expansion.
| Why it matters | Co-editing is the feature that makes people live in the product; CRDTs are a genuinely hard, sought-after competency. |
| Complexity | L — CRDT lib integration is M; the depth is persistence-as-versions, the relay at scale, access control per doc, and editor bindings. |
| Dependencies | Sync/event channels (sync/), versioning (storage/07), policy (07). |
| Resume impact | Very high. “Real-time collaborative editing with CRDTs, persisted into a versioned store” is a marquee distributed-systems line. |
C2 — Comments & Annotations
Threaded comments on files and region annotations (highlight a PDF passage, pin a point on an image/design), with @-mentions and notifications.
- Design: comments are metadata nodes linked to a file (+ optional region anchor); notifications via the event system (08); annotations on immutable versions stay anchored.
| Why it matters | Turns files into discussion surfaces (review/feedback workflows) — high everyday value, modest cost. |
| Complexity | M — data model + region anchoring (esp. PDFs) + notifications. |
| Dependencies | Metadata, events (08), notifications (04 contexts). |
| Resume impact | Medium. Solid product engineering; region-anchoring has some depth. |
C3 — Real-time Presence & Awareness
Show who’s viewing/editing a file or folder right now, with cursors/selections in co-edited docs.
- Design: ephemeral pub-sub (Yjs awareness protocol for docs; a lightweight presence channel otherwise) — not persisted, low-latency, over the event tier.
| Why it matters | Makes collaboration feel live; cheap once the relay (C1) exists. |
| Complexity | S–M — ephemeral state + fan-out; mostly reuses C1’s transport. |
| Dependencies | Event/WebSocket tier (08), C1 relay. |
| Resume impact | Low-medium. Nice UX; modest novelty. |
C4 — File Requests / Collect
A link that lets external people upload into a chosen folder without an account (e.g. “send me your documents”) — scoped, expiring, quota-bounded.
- Design: a scoped, single-purpose token (ADR-0010) → presigned upload (ADR-0011) into a target folder; policy-limited (size/type/expiry).
| Why it matters | A common, high-utility flow (intake, collection) competitors charge for; cheap given presign + tokens. |
| Complexity | S — scoped tokens + presign + a public upload UI. |
| Dependencies | Tokens/presign (ADR-0010/ADR-0011), policy (07). |
| Resume impact | Low. Useful, not deep. |
C5 — Shared Spaces / Teams
Team workspaces with granular roles and inherited permissions, powered by the ReBAC graph (07).
| Why it matters | The organizing unit for team collaboration; showcases the ReBAC model in product terms. |
| Complexity | M — spaces model + ReBAC integration + admin UX. |
| Dependencies | ReBAC/policy (07), identity (ADR-0010). |
| Resume impact | Medium (as the surface of the ReBAC work). |
Priorities within collaboration
C1 (CRDT co-editing) is the headline (build the relay once; C3 presence comes nearly free with it). C2 is high-value/modest-cost. C4/C5 are cheap wins on existing primitives.