← Work
01

Murmur

A voice-first communication platform, built from scratch.

Year2024–2026
RoleDesign · Development · Architecture
CategoryApp · Product · Infrastructure
Murmur — screenshot
Context

Discord is the reference for community communication. But building something similar — from scratch, alone — is the best way to understand what makes a real-time platform actually work. Murmur started as an experiment and became a production-ready product.

Challenge

Real-time voice is hard. WebRTC signaling needs to be fast and reliable. Managing concurrent WebSocket connections for chat while handling voice routing is a different problem than building a typical web app. Add auth, file storage, friends, multilingual UI, and E2EE for DMs — and the scope becomes significant.

Key Decisions

Rust for the backend

Axum + Tokio handles WebSocket signaling and the HTTP API. Performance-critical, memory-safe. The compiler forces you to think through failure modes before they reach production.

SolidJS for the frontend

Fine-grained reactivity means the UI updates surgically — no virtual DOM overhead. Better for real-time dashboards, voice status, and live channel lists.

PostgreSQL + Redis

Relational data for persistence, Redis for pub/sub and real-time event routing across instances.

WebRTC for voice

Browser-native peer-to-peer mesh. Screen sharing included. No relay server needed for small rooms.

E2EE for direct messages

Web Crypto API + TweetNaCl. Privacy by default. The server never sees plaintext DM content.

Stack
SolidJSTypeScriptUnoCSSViteRustAxumTokioSQLxPostgreSQLRedisWebRTCDockerNginxPrometheusGrafana
Results

Production-ready: deployable in one command via Docker Compose, monitored with Prometheus + Grafana + Uptime Kuma, load-tested with autocannon and k6. CI/CD via GitHub Actions → GHCR → self-hosted runner → VPS.

Learnings
  1. 01Real-time systems force you to think about failure modes you would never consider in a CRUD app.
  2. 02Observability is not optional for production. If you can't measure it, you can't improve it.
  3. 03Rust's strict compiler is the point — it catches a class of bugs before they reach production.
  4. 04Building at this scope solo requires ruthless scope management and the discipline to ship something imperfect.
Next Project02Undercover