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:

  1. 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
  2. Node.js with Express back-end server that exposes API endpoints for creating, editing, and deleting code snippets (backed by a scalable PostgreSQL database)
  3. Self-hosted, integrated Piston code execution server
  4. 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.