
Discord est la référence pour la communication communautaire. Mais construire quelque chose de similaire — from scratch, seul — est le meilleur moyen de comprendre ce qui fait fonctionner une plateforme en temps réel. Murmur a commencé comme une expérimentation et est devenu un produit prêt pour la production.
La voix en temps réel c'est difficile. La signalisation WebRTC doit être rapide et fiable. Gérer les connexions WebSocket concurrentes pour le chat tout en gérant le routage vocal est un problème différent de la construction d'une application web typique. Ajoutez l'auth, le stockage de fichiers, les amis, l'interface multilingue, et le E2EE pour les DMs — et l'ampleur devient significative.
Rust pour le backend
Axum + Tokio gère la signalisation WebSocket et l'API HTTP. Critique en performance, sûr en mémoire. Le compilateur vous force à réfléchir aux modes de défaillance avant qu'ils n'atteignent la production.
SolidJS pour le frontend
La réactivité à fine granularité signifie que l'UI se met à jour chirurgicalement — pas de surcharge du DOM virtuel. Mieux pour les tableaux de bord en temps réel, le statut vocal, et les listes de canaux en direct.
PostgreSQL + Redis
Données relationnelles pour la persistance, Redis pour le pub/sub et le routage d'événements en temps réel entre instances.
WebRTC pour la voix
Mesh peer-to-peer natif du navigateur. Partage d'écran inclus. Pas de serveur relais nécessaire pour les petites salles.
E2EE pour les messages directs
Web Crypto API + TweetNaCl. Confidentialité par défaut. Le serveur ne voit jamais le contenu des DMs en texte clair.
Prêt pour la production : déployable en une commande via Docker Compose, monitoré avec Prometheus + Grafana + Uptime Kuma, testé en charge avec autocannon et k6. CI/CD via GitHub Actions → GHCR → runner auto-hébergé → VPS.
- Les systèmes en temps réel vous forcent à réfléchir à des modes de défaillance que vous ne considéreriez jamais dans une application CRUD.
- L'observabilité n'est pas optionnelle en production. Si vous ne pouvez pas la mesurer, vous ne pouvez pas l'améliorer.
- Le compilateur strict de Rust est le point — il attrape une classe de bugs avant qu'ils n'atteignent la production.
- Construire à cette échelle seul nécessite une gestion impitoyable de la portée et la discipline de livrer quelque chose d'imparfait.