Things I have built.
Side projects, mostly. Everything here is open source, and every entry links to the repository it describes.
Shatters
Second version, rewritten as one repository. The server is deliberately dumb: it authenticates clients, relays opaque ciphertext, and stores public keys and encrypted blobs. Identity keys, X3DH key agreement and the Double Ratchet all run in the browser through libsodium. The repository carries its own protocol specification and threat model. The first version lived in three repositories, in C++23, Rust and Tauri, and is still up as reference.
- server
Go service on chi and gorilla/websocket, with PostgreSQL through pgx and versioned SQL migrations. It handles authentication and relay, and never sees plaintext.
Source ↗ - web
Next.js and React client, where the end-to-end encryption runs: Ed25519 and X25519 identity keys, X3DH and the Double Ratchet, all through libsodium. Unit and end-to-end tests in Vitest.
Source ↗ - deploy
Docker Compose stacks for development and production, with Caddy terminating TLS. Takes a bare VPS to a working instance in one command.
Source ↗