Skip to content

Optional IPFS backend for project-store (encrypted cross-device sync, no server) #35

Description

@criptogus

A concrete, CRDT-free first step toward Phase 3 of the roadmap (local-first collaboration).

Proposal

packages/project-store is a local JSONL store that already mirrors a cloud project model. Add an optional, encrypted IPFS backend behind it:

  • Documents and project metadata are encrypted client-side (user-held key) and pinned to IPFS (configurable pinning service or self-hosted node); the store keeps CID pointers.
  • A second machine with the same key pulls and decrypts — cross-device sync and backup with no central server and no account.
  • Strictly opt-in and layered: the filesystem remains the source of truth; disabling the backend loses nothing.

Why before CRDT

Real-time co-editing (Phase 3) needs a transport and identity layer anyway. Single-writer encrypted sync delivers most of the day-one user value (my documents on all my machines, survivable backups) at a fraction of the complexity, and the key/CID plumbing it creates is reusable by the later collaboration work.

Open questions (please discuss before implementing)

  • Pinning strategy: bring-your-own pinning service vs bundling a default (cost/abuse trade-offs).
  • Key management UX: passphrase-derived vs generated key file; recovery story.
  • Conflict policy for the single-writer model (last-writer-wins with visible history?).

Part of the "off SaaS" track.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions