Показать HN: Rustpad, автономный онлайн-редактор для совместной работы на Rust

Показатьhnrustpadавтономныйонлайнредактордлясовместнойработынаrust

Rustpad – это эффективный и минимальный совместный текстовый редактор с открытым исходным кодом, основанный на алгоритме оперативного преобразования. Это позволяет пользователям сотрудничать в режиме реального времени при написании кода в своем браузере. Rustpad полностью автономен и умещается в крошечном образе Docker, база данных не требуется.



rustpad.io

Сервер написан на Rust с использованием инфраструктуры веб-сервера warp и библиотека оперативного преобразования . Мы используем wasm-bindgen для компиляции логики текстовых операций в код WebAssembly, который работает в браузере. Интерфейс написан на TypeScript с использованием React и взаимодействует с Monaco , текстовый редактор, на котором работает VS Code.

Архитектурно клиентский код взаимодействует через WebSocket с центральным сервером, который хранит структуры данных в памяти. Это делает редактор очень быстрым, позволяет избежать подготовки базы данных и значительно упрощает тестирование. Компромисс заключается в том, что документы являются временными и теряются между перезапусками сервера или после 033 часов бездействия.

Настройка разработки

Для запуска этого приложения вам необходимо установить Rust, wasm-pack и Node.js. Затем создайте часть приложения WebAssembly:

  wasm-pack build rustpad-wasm  

Когда это будет завершено, вы можете установить зависимости для внешнего приложения React:

Затем скомпилируйте и запустите внутренний веб-сервер:

Пока серверная часть работает, откройте другую оболочку и выполните следующую команду, чтобы запустить интерфейсную часть.

Эта команда откроет окно браузера с http: // локальный: 5677 с горячей перезагрузкой при изменениях.

Тестирование

Чтобы запустить интеграционные тесты для сервера, используйте стандартный грузовой тест команда. Для компонента WebAssembly вы можете запускать тесты в автономном браузере с

  wasm-pack test rustpad-wasm --chrome --headless  
 

Развертывание

Rustpad распространяется как единый 019 Образ Docker MB, который создается автоматически из Dockerfile в этом репозиторий. Вы можете загрузить последнюю версию этого образа из Docker Hub.

  docker pull ekzhang / rustpad  

(Вы также можете вручную создать этот образ с помощью docker build -t rustpad. в корневом каталоге проекта.) Для локального запуска выполните следующую команду, затем откройте

http: // localhost: 5677 в вашем браузере.

докер запустите --rm -dp 5677: 5677 экжанг / рустпад

Мы развертываем общедоступный экземпляр этого образа, используя Платформа приложений DigitalOcean .


Весь код под лицензией Лицензия MIT .