Skip to content
Le-SpacePublic

About

A folder that stays the same on two devices. No account, nothing in the middle.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

ablage

Deutsch · English

A folder on this device that stays in sync with a folder on another device — files added, changed and deleted — with no account and nothing in the middle.

Two devices pair once by scanning a QR code off each other's screen. After that they are peers: the bytes travel directly, and no server ever holds them.

Live demo: ablage.le-space.de — open it on two devices. Every push to main that passes the tests is deployed there.

All four stages work. Drop files or a whole folder in, show a code, and it is on the other device. Edits update, deletions cross, and a change made on both sides at once keeps both copies. On Chromium it can sync a real folder you choose, and notices edits made outside the app. Asserted end to end in Chromium and Firefox. In English and German, with an introduction on a first visit.

npm install
npm run dev       # the app
npm test          # unit tests, then the browser suite in Chromium and Firefox

The one rule

The CRDT holds metadata. Bitswap moves bytes. Never file content in the CRDT. What an entry holds, and why its path is stored whole from day one, is in docs/sync.md.

Read more

  • Sync — the entry shape, Yjs rather than OrbitDB, and why the two sides sync over one direct stream rather than pubsub
  • Pairing — the short code and why it is off, the camera no test covers, and why both devices have to be there at once
  • The folder — the private folder first, a real one on Chromium, working offline, and installing
  • Roadmap — the open questions, the stages, and what is out of scope
  • PLAN.md — the shape of the code and the order it gets built in
  • AGENTS.md — what is expensive to learn twice: relays, limited connections, and a version that moves with every commit

The reasoning is in NiKrause/libp2p-webrtc-qr#56.

Built on

  • @le-space/libp2p-webrtc-qr — the QR handshake, the direct connection, and the elements for the code, the camera, the network check and the introduction
  • Yjs — the index
  • Helia — content addressing, and bitswap for the bytes

License

Apache-2.0 OR MIT, at your option.

About

A folder that stays the same on two devices. No account, nothing in the middle.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages