rustpad - Efficient and minimal collaborative code editor, self-hosted, no database required

  •        145

Rustpad is an efficient and minimal open-source collaborative text editor based on the operational transformation algorithm. It lets users collaborate in real time while writing code in their browser. Rustpad is completely self-hosted and fits in a tiny Docker image, no database required. The server is written in Rust using the warp web server framework and the operational-transform library. We use wasm-bindgen to compile text operation logic to WebAssembly code, which runs in the browser. The frontend is written in TypeScript using React and interfaces with Monaco, the text editor that powers VS Code.

https://rustpad.io/
https://github.com/ekzhang/rustpad

Dependencies:

@chakra-ui/react : ^1.6.3
@emotion/react : ^11.4.0
@emotion/styled : ^11.3.0
@monaco-editor/react : ^4.1.3
framer-motion : ^4.1.17
react : ^17.0.2
react-dom : ^17.0.2
react-icons : ^4.2.0
react-scripts : 4.0.3
rustpad-wasm : file:./rustpad-wasm/pkg
use-local-storage-state : ^10.0.0

Tags
Implementation
License
Platform

   




Related Projects

ckeditor5 - Development environment for CKEditor 5 – the best browser-based rich text editor.

  •    Javascript

A set of ready-to-use rich text editors created with a powerful framework. Made with real-time collaborative editing in mind. CKEditor 5 is distributed as four ready-to-use builds which you can install from npm.

leaps - A pair programming service using Operational Transforms

  •    Go

Leaps is a service for collaboratively editing your local files over a web UI, using operational transforms to ensure zero-collision synchronization across any number of editing clients.Simply navigate to a directory you want to share, run leaps, open the hosted page (default http://localhost:8080) in your browser and direct any friends on your LAN to the same page. You can now collaboratively edit any documents in that directory.

ot.js

  •    Javascript

Collaborative editing using operational transformation

Oni - new kind of editor, powered by Neovim

  •    TypeScript

Oni is a new kind of editor, focused on maximizing productivity - combining modal editing with features you expect in modern editors. Oni is built with neovim, and inspired by VSCode, Atom, LightTable, and Emacs. The vision of Oni is to build an editor that allows you to go from thought to code as easily as possible - bringing together the raw editing power of Vim, the feature capabilities of Atom/VSCode, and a powerful and intuitive extensibility model - wrapped up in a beautiful package. This repository is under active development, and until 1.0 please consider everything unstable.

tiptap - A headless, framework-agnostic and extendable rich text editor, based on ProseMirror

  •    Typescript

tiptap is a headless, framework-agnostic and extendable rich text editor, based on ProseMirror. It gives you full control about every single aspect of your text editor experience. It’s headless and comes without any CSS. You are in full control over markup, styling and behaviour. tiptap works with Vanilla JavaScript and Vue.js, but it’s also possible to use it in React, Svelte and others. Real-time collaboration, syncing between different devices and working offline is supported.


ShareJS - Collaborative editing in any app

  •    Javascript

NOTE: ShareJS is now ShareDB. See here and here for more information. .

smalleditor - Small WYSIWYG editor with delta save, inspired by Medium

  •    Javascript

Inspired by Medium and MediumEditor. For future developement please refer TODO section. If you need collaborative editor - I would suggest you to use quilljs.

HedgeDoc - The best platform to write and share markdown

  •    TypeScript

HedgeDoc (formerly known as CodiMD) is an open-source, web-based, self-hosted, collaborative markdown editor. You can use it to easily collaborate on notes, graphs and even presentations in real-time. All you need to do is to share your note-link to your co-workers and they’re ready to go.

ProseMirror- A toolkit for building rich-text editors on the web

  •    Javascript

ProseMirror is a well-behaved rich semantic content editor based on contentEditable, with support for collaborative editing and custom document schemas. Rich content editors should, ideally, produce clean, semantically meaningful documents while still being easy for users to understand. ProseMirror tries to bridge the gap between editing explicit, unambiguous content like Markdown or XML, and classical WYSIWYG editors.

Tokio - Platform for writing fast networking code in Rust

  •    Rust

Tokio is an asynchronous runtime for the Rust programming language. It provides the building blocks needed for writing network applications. It gives the flexibility to target a wide range of systems, from large servers with dozens of cores to small embedded devices. It provides a multi-threaded, work-stealing scheduler. Applications can process hundreds of thousands of requests per second with minimal overhead.

flame - Flame is self-hosted startpage for your server

  •    TypeScript

Flame is self-hosted startpage for your server. Its design is inspired (heavily) by SUI. Flame is very easy to setup and use. With built-in editors it allows you to setup your very own appliaction hub in no time - no file editing necessary.

Visual Studio Code - Code editing. Redefined

  •    TypeScript

Visual Studio Code is a new type of tool that combines the simplicity of a code editor with what developers need for their core edit-build-debug cycle. Code provides comprehensive editing and debugging support, an extensibility model, and lightweight integration with existing tools.

Signoz - Open-source Observability platform and an alternative to DataDog, NewRelic

  •    Javascript

SigNoz is an opensource observability platform. SigNoz uses distributed tracing to gain visibility into your systems and powers data using Kafka (to handle high ingestion rate and backpressure) and Apache Druid (Apache Druid is a high performance real-time analytics database), both proven in the industry to handle scale.

use-editable - A small React hook to turn elements into fully renderable & editable content surfaces, like code editors, using contenteditable (and magic)

  •    TypeScript

It aims to allow any element to be editable while still being able to render normal React elements to it — no innerHTML and having to deal with operating with or rendering to raw HTML, or starting a full editor project from scratch. You'll then be able to import useEditable and pass it an HTMLElement ref and an onChange handler.

text - 📑 Collaborative document editing using Markdown

  •    Javascript

Nextcloud Text is the default text editor since Nextcloud 17. To start editing just open an existing markdown or plaintext file or create a new one. Currently this app requires the master branch of the Viewer app.

Jumper - Collaborative search engine in PHP

  •    PHP

Jumper 2.0 is a collaborative community search platform that revolutionizes search by crowdsourcing knowledge management powered by a shared bookmarking engine. It is easily and quickly deployed into a community of practice that benefits users with complex and specialized search requirements. Jumper delivers universal search of any databases, flat files, fileshares, content systems, web pages, blogs and wikis, even people - through one simple search box.

Vim

  •    C

Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems.

Tina - Site editing toolkit for modern React-based sites (Gatsby and Next.js)

  •    Typescript

Tina is an open-source site editing toolkit for React-based frameworks (Gatsby & Next.js). Manage content on your own site, not another platform. Import Tina directly into your components to expose an editing interface for controlling and updating layers of your content mesh. You define the content model and editing powers specific to your site.

Valtio - Makes proxy-state simple for React and Vanilla

  •    Typescript

Valtio turns the object you pass it into a self-aware proxy. You can make changes to it in the same way you would to a normal js-object. Valtio supports React-suspense and will throw promises that you access within a components render function. This eliminates all the async back-and-forth, you can access your data directly while the parent is responsible for fallback state and error handling.






We have large collection of open source products. Follow the tags from Tag Cloud >>


Open source products are scattered around the web. Please provide information about the open source projects you own / you use. Add Projects.