Umbra
Umbra is an open-source, real time collaborative code execution platform.
Umbra is a browser-based code editor that enables real-time collaboration and code execution. It was built with the following priorities in mind:
- Make spontaneous pair and group programming easy, lightweight, and convenient
- Provide low-latency, automatic conflict resolution in collaborative text editing
- Ensure secure, resilient execution of arbitrary user code
The major components of Umbra's service-oriented architecture are:
- WebSocket-powered real time collaboration service that handles conflict-free replicated data type (CRDT) transactions and state synchronization between users, and persists sessions through connection loss
- Node.js with Express back-end server that exposes API endpoints for creating, editing, and deleting code snippets (backed by a scalable PostgreSQL database)
- Self-hosted, integrated Piston code execution server
- User interface built with React, TypeScript, and ChakraUI, featuring a customized CodeMirror component integrated with Yjs
You can read more in the Umbra case study, which explores the decisions we made when designing and implementing Umbra.