The goal is to create a decentralized whatsapp.
Distinguished properties we'd want to support:
- Private: authenticated and end-to-end encrypted
- Asynchronous: conversations can be created and progress without both parties being online
- Deniable: a leaked transcript doesn't provide proof of who authored the messages
- Forward and future secure: leaked credentials can't reveal an entire conversation
- --All of the above for group chats-- (stretch goal)
The initial version is a port of an existing chat application that is synchronous, end-to-end encrypted, and ephemeral (no static keys). This initial experience, while admittedly limitted, offers a working end-to-end prototype with interfaces and affordances that can be iterated upon.
The monorepo is using Turborepo and pnpm workspaces to link packages together.
Packages:
- ./apps/ipdm: UI, app frontend built with Vite, Preact, Tailwind CSS
- ./packages/client: Chat client package
- ./packages/relay: Libp2p dev relay server
pnpm install
pnpm build
Next, run app
in development mode:
pnpm dev
The app should be up and running at http://localhost:5173.