Проект RethinkDB, развивающий документо-ориентированную СУБД, обеспечивающую хранение данных в формате JSON, анонсировал первый официальный выпуск платформы Horizon, предоставляющей разработчикам универсальный серверный бэкенд для работы web-приложений, хранящих данные на сервере и обменивающихся информацией в реальном режиме времени. Код Horizon написан на языке JavaScript и распространяется под лицензией MIT.
Используя Horizon разработчики могут сосредоточить всё внимание на создании работающего в браузере кода приложения, обращаясь к типовому бэкенду через специальный API, который кроме работы с данными также позволяет организовать аутентификацию, разграничение доступа, управление пользователями и другие функции. По своей сути Horizon может рассматриваться как открытая и запускаемая на своих мощностях альтернатива продвигаемого компанией Google проприетарного сервиса Firebase.
Horizon включает в себя:
- Сервер для организации работы бэкенда, построенный на базе фреймворка Node.js, технологии WebSocket и СУБД RethinkDB, обеспечивающий построенное хранение данных, аутентификацию пользователей, проверку прав доступа и перенаправление потоков между приложениями в режиме реального времени.
- Клиентская JavaScript-библиотека, которую можно использовать на стороне выполняемого в браузере web-приложения (фронтэнда) для сохранения JSON-документов в БД, отправки запросов и подписки на получение обновлений информации;
- Утилита командной стоки «hz» для генерации шаблонов типовых проектов, запуска локального сервера Horizon и размещение приложений в облаке.
Первый выпуск предоставляет следующие API:
- Subscribe — потоковый API для построения realtime-приложений, работающих в браузере без необходимости написания серверного кода;
- Auth — API аутентификации, поддерживающий типовых провайдеров аутентификации, включая Facebook, Twitter, Google и GitHub
- Identity — API для управления учётными записями пользователей;
- Permissions — модель безопасности, позволяющая разработчику ограничить доступ к данным;
В будущих выпусках планируется появление:
- Session — управления сеансами;
- Geolocation — API для создания приложений, манипулирующих данными о местоположении пользователя;
- Presence — API для определения присутствия пользователя в online и информирования об этом других пользователей;
- Plugins — система подключения плагинов, расширяющих функциональность Horizon, например, средства для создания новых сервисов;
- Backend — API и протокол для интеграции написанных с использованием библиотеки Horizon web-приложений со сторонними реализациями бэкендов.
- Встроенный web-интерфейс для интерактивного просмотра данных на бэкенде;
- Улучшенные средства управления соединениями и восстановлением после разрыва связи;
- Возможность создания собственных команд Horizon с использованием языка запросов ReQL и JavaScript;
- Поддержка загрузки файлов от клиента;
- Аутентификация по паролю (в дополнение к OAuth-провайдерам);
- Встроенная поддержка извлечения данных с использованием языка запросов GraphQL.