{"repo":"ekzhang/rushlight","free":true,"listed":false,"github":"https://github.com/ekzhang/rushlight","clone":"git clone https://github.com/ekzhang/rushlight.git","description":"Real-time collaborative code editing on your own infrastructure","language":"TypeScript","stars":204,"topics":["codemirror","collaborative-editing","markdown","postgres","redis"],"license":"MIT","category":"databases-storage","readme_excerpt":"🕯️ Rushlight Make collaborative code editors that run on your own infrastructure: just Redis and a database. Supports multiple real-time documents, with live cursors. Based on CodeMirror 6 and operational transformation, so all changes are resolved by server code. It's designed to be as easy to integrate as possible (read: boring). The backend is stateless, and you can bring your own transport ; even a single HTTP handler is enough. Unlike most toy examples, Rushlight supports persistence in any durable database you choose. Real-time updates are replicated in-memory by Redis, with automatic log compaction. An experiment by Eric Zhang, author of Rustpad. Motivation Let's say you're writing a web application. You already have a database, and you want to add real-time collaborative editing. However, most libraries are unsuitable because they: - Require proprietary gadgets - Are not flexible enough, e.g., to customize appearance - Make you subscribe to a cloud service where you can't control the data - Use decentralized algorithms like CRDTs that are hard to reason about - Make it difficult to authenticate users or apply rate limits - Rely on a single stateful server, which breaks with replication / horizontal autoscaling - Need WebSockets or other protocols that aren't supported by some providers - Are just generally too opinionated This library tries to take a more practical approach. Usage Install the client and server packages. On the frontend, create a CollabClient object a","default_branch":null,"files":null,"tree":[],"storefront":"/r/ekzhang","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/ekzhang/rushlight/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}