De2do (de2do.xyz) — Permissionless Decentralised Collaboration (Svelte)

A basic decentralized, local-first, peer-to-peer todo application built with libp2p, IPFS, and OrbitDB. This app demonstrates how modern Web3 technologies can create truly decentralized applications that work entirely in the browser.
control, distributed across a resilient peer-to-peer network or self-hosted signaling or relay nodes. Imagine traditional software which was sold on a compact disc in the past - once installed it could never be stopped. A USP which should convince every client around the globe.
- Storacha/Filecoin Integration with UCAN-Auth: Backup & restore todo lists via Storacha gateway to Filecoin decentralized storage - restore the TodoList's OrbitDB decentralized form the IPFS network
- Progressive Web App: If clouds are down, this is a PWA which can run from desktops and mobile devices connecting peer-to-peer to other collaborators via a relay or OrbitDB pinning network.
- Passkey wallet + local Anvil / EntryPoint v0.8:
docs/HOWTO_PASSKEY_ESCROW.md
- P2Pass - peer-to-peer identities, passkeys and ucans integrated: https://github.com/asabya/p2pass
🚀 Live Demo
Key Features
- ✅ Local-First Storage - Data is stored in the browser only and is getting replicated to other peers via OrbitDB and IPFS
- ✅ OrbitDB Relay-Pinning Nodes included - If a peer is not online while data is needed by other peers - personal pinning nodes or full OrbitDB pinning networks can help out.
- ✅ Peer-to-Peer Communication - Browsers connect directly via WebRTC (with help of signaling nodes)
- ✅ Real-time Synchronization - Changes appear instantly across all peers
- ✅ Encryption - Todo-List is by default unencrypted and publicly stored on IPFS so it can be embedded easily into public websites. It is possible to encrypt your todo-list with a password.
This project uses the orbitdb-relay-pinner npm package for local/dev relay (see npm run relay). For ports, HTTP routes, and env vars, see Relay configuration and Local relay / fork builds.
Quick Start
Run De2do via a public relay
copy .env.example .env
npm install
npm run dev
Run a local relay (second terminal):
npm install
npm run relay
# or: npm run relay:verbose
# Copy a /ws/p2p/… or /webrtc-direct/… multiaddr from the relay logs (or curl http://127.0.0.1:3000/multiaddrs if HTTP_PORT=3000)
# into .env, e.g.:
# VITE_RELAY_BOOTSTRAP_ADDR_DEV=/ip4/127.0.0.1/tcp/4102/ws/p2p/<peerId>
Run the the local environment for EIP7702/ERC7443 passkey wallets
One-shot local AA + contracts:
pnpm run setup:local-aa (with anvil running — see HOWTO )
Docs
Configuration
For detailed relay server configuration options and HTTP API endpoints, see Relay Configuration Documentation.
🎯 How to Test
- Open Two Browser Windows - You need at least two browser instances, a mobile device, or ask another distant person to open the app
- Load the Same URL - all app users should load the same app URL
- Accept Consent - Check all consent boxes in both browsers
- Wait for Connection - The app will automatically discover and connect peers
- Copy URL from browser A to browser B - If both browsers open the same todo-list they can see each other's todos (only A has write permission at the moment)
- Add Todos - Create todos in one browser and watch them appear in the other
A legacy docs/TUTORIAL.md / tutorial-01.js quick-start is not in this tree; use the HOWTO and npm run dev / npm run test:e2e instead.
📄 License
This project is open source and available under the LICENSE file.
See docs/WEBAUTHN_VARSIG_CHANGES.md for the WebAuthn varsig/PRF flow details and sequence diagrams.