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
- HTTP: https://de2do.xyz
- HTTP (legacy host): https://simple-todo.le-space.de
- IPFS (dweb.link): https://QmUdf5uJAunNqsos4USWGJDFRMpY6vUM1b24u2ky981Mtn.ipfs.dweb.link
- IPFS (dweb.link, orbitdb demo): https://QmUdf5uJAunNqsos4USWGJDFRMpY6vUM1b24u2ky981Mtn.ipfs.dweb.link/#/orbitdb/zdpuAskw4Xes4nxR1YNV8TxK2qmrDgceAqEoGHDtTAUhQWvDP
- ✅ 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.
Run De2do via a public relay
copy .env.example .env
npm install
npm run devRun 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 )
For detailed relay server configuration options and HTTP API endpoints, see Relay Configuration Documentation.
- 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.jsquick-start is not in this tree; use the HOWTO andnpm run dev/npm run test:e2einstead.
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.



