Workers for the API and serving the React frontend.
Durable Objects to manage WebSocket connections and state (each chat room is a DO).
D1 (SQLite) for message persistence and history.
R2 for file uploads.
I wanted to see if I could build a fully functional, real-time chat platform without managing a single container or VPS. It supports voice/video calls via WebRTC (mesh topology), file sharing, and even push notifications.
The project is AGPLv3 licensed. I'd love to hear your thoughts on the architecture or answer any questions about working with Durable Objects!