# rethinkdb/horizon

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/rethinkdb-horizon).**

6,738 stars · 346 forks · JavaScript · MIT

## Links

- GitHub: https://github.com/rethinkdb/horizon
- awesome-repositories: https://awesome-repositories.com/repository/rethinkdb-horizon.md

## Description

Horizon is a realtime API server and RethinkDB backend designed to push database changes instantly to front-end clients. It utilizes a WebSocket data streaming API to synchronize data between the database and user interfaces without requiring manual polling.

The project integrates an OAuth identity manager for verifying user identities through third-party providers and a role-based access control system to define granular permissions for viewing or modifying database documents. It is delivered as a containerized backend framework, allowing the server and its dependencies to be deployed as a portable image.

The platform covers data storage and synchronization, including the ability to query, modify, and monitor documents in real time. It also provides tools for managing user profiles, session tokens, and group access.

## Tags

### Data & Databases

- [Data Change Subscriptions](https://awesome-repositories.com/f/data-databases/data-change-subscriptions.md) — Implements real-time data change subscriptions that push updates to clients without polling. ([source](https://github.com/rethinkdb/horizon/blob/next/GETTING-STARTED.md))
- [Realtime Document Database Servers](https://awesome-repositories.com/f/data-databases/optimistic-update-management/realtime-synchronization/realtime-document-database-servers.md) — Acts as a server that persists and synchronizes JSON documents across connected clients in real time.
- [Document Writes](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/data-persistence-storage/data-storage/client-side-persistence/browser-based-storage/document-stores/document-writes.md) — Supports writing data objects to a collection and returning generated identifiers. ([source](https://github.com/rethinkdb/horizon/blob/next/GETTING-STARTED.md))
- [Document Retrieval Interfaces](https://awesome-repositories.com/f/data-databases/data-management/document-record-handling/document-retrieval-interfaces/document-retrieval-interfaces.md) — Provides interfaces to retrieve documents from a collection and process them through subscription handlers. ([source](https://github.com/rethinkdb/horizon/blob/next/GETTING-STARTED.md))
- [Data Stream Integrations](https://awesome-repositories.com/f/data-databases/data-stream-integrations.md) — Delivers instant data updates to front-end applications via a streaming API. ([source](https://github.com/rethinkdb/horizon#readme))
- [Database Changefeed Listeners](https://awesome-repositories.com/f/data-databases/database-changefeed-listeners.md) — Implements reactivity by listening to RethinkDB changefeeds to push modified documents to clients automatically.
- [Document Databases](https://awesome-repositories.com/f/data-databases/document-databases.md) — Allows creating, updating, and deleting documents within RethinkDB collections. ([source](https://github.com/rethinkdb/horizon/blob/next/protocol.md))
- [Document Deletions](https://awesome-repositories.com/f/data-databases/in-memory-data-stores/vector-stores/document-deletions.md) — Enables the removal of single or multiple documents from a collection using unique identifiers. ([source](https://github.com/rethinkdb/horizon/blob/next/GETTING-STARTED.md))
- [Reactive Databases](https://awesome-repositories.com/f/data-databases/reactive-databases.md) — Provides a reactive database backend that streams live updates directly to the front-end.
- [Real-Time Data Streaming](https://awesome-repositories.com/f/data-databases/real-time-data-streaming.md) — Streams instant data updates from the database to front-end applications. ([source](https://github.com/rethinkdb/horizon/blob/next/docker-compose.dev.yml))
- [Database Changefeeds](https://awesome-repositories.com/f/data-databases/real-time-data-streaming/stream-subscriptions/websocket-stream-managers/database-changefeeds.md) — Uses a bidirectional WebSocket API to stream database changes instantly to front-end clients without polling.
- [Real-time Data Subscriptions](https://awesome-repositories.com/f/data-databases/real-time-data-subscriptions.md) — Provides capabilities for querying documents and subscribing to live updates using filters and sorting. ([source](https://github.com/rethinkdb/horizon/blob/next/protocol.md))
- [Real-time Data Synchronization](https://awesome-repositories.com/f/data-databases/real-time-data-synchronization.md) — Synchronizes database state with front-end interfaces in real time to ensure consistency across clients.

### Networking & Communication

- [Real-Time Database Streaming via WebSockets](https://awesome-repositories.com/f/networking-communication/real-time-database-streaming-via-websockets.md) — Utilizes a WebSocket data streaming API to synchronize database changes with user interfaces instantly.

### Part of an Awesome List

- [Data Streaming APIs](https://awesome-repositories.com/f/awesome-lists/media/podcasts/data-streaming-apis.md) — Provides a programmatic interface for streaming live data updates directly from the database. ([source](https://github.com/rethinkdb/horizon/blob/next/README.md))

### Security & Cryptography

- [Identity-Based Data Restrictions](https://awesome-repositories.com/f/security-cryptography/access-control/panel-access-controls/workspace-access-restrictions/relation-access-restrictions/identity-based-data-restrictions.md) — Restricts data visibility based on user identity tokens and defined security policies. ([source](https://github.com/rethinkdb/horizon/blob/next/README.md))
- [Database Access Controls](https://awesome-repositories.com/f/security-cryptography/granular-access-controls/database-access-controls.md) — Provides granular permission management specifically for controlling access to database documents.
- [OAuth and Identity Providers](https://awesome-repositories.com/f/security-cryptography/identity-access-management/authentication-strategies/user-facing-login-methods/oauth-identity-providers.md) — Delegates user authentication to third-party providers using standardized OAuth token exchanges.
- [User Identity Verification](https://awesome-repositories.com/f/security-cryptography/identity-authentication/user-identity-verification.md) — Verifies user identities through integration with third-party identity providers. ([source](https://github.com/rethinkdb/horizon#readme))
- [Data Access Permission Configurators](https://awesome-repositories.com/f/security-cryptography/permission-based-access-control/data-access-permission-configurators.md) — Enforces granular data-level permissions to restrict which users can view or modify specific documents. ([source](https://github.com/rethinkdb/horizon/blob/next/client))
- [Role-Based Access Control](https://awesome-repositories.com/f/security-cryptography/role-based-access-control.md) — Enforces granular data visibility and modification permissions based on assigned user roles.
- [Role-Based Access Controls](https://awesome-repositories.com/f/security-cryptography/role-based-access-controls.md) — Enforces security policies by mapping user identities to specific database collections and allowed actions.
- [Sensitive Data Access Controls](https://awesome-repositories.com/f/security-cryptography/sensitive-data-access-controls.md) — Implements a security model to protect sensitive information from unauthorized access and modification. ([source](https://github.com/rethinkdb/horizon#readme))
- [User Identity Management](https://awesome-repositories.com/f/security-cryptography/user-identity-management.md) — Manages user profiles and identity-related data to track individuals accessing the application. ([source](https://github.com/rethinkdb/horizon/blob/next/client))
- [Identity Grouping](https://awesome-repositories.com/f/security-cryptography/user-identity-management/identity-grouping.md) — Organizes users into groups to streamline the enforcement of data access policies. ([source](https://github.com/rethinkdb/horizon/tree/next/client))

### Web Development

- [Real-time Sync Engines](https://awesome-repositories.com/f/web-development/websocket-integrations/real-time-sync-engines.md) — Bridges RethinkDB changefeeds to client-side updates via a WebSocket-based real-time sync engine.
- [Reactive API Clients](https://awesome-repositories.com/f/web-development/reactive-api-clients.md) — Allows front-end applications to connect to the backend to trigger reactive data updates. ([source](https://github.com/rethinkdb/horizon/blob/next/client))

### DevOps & Infrastructure

- [Container Deployment](https://awesome-repositories.com/f/devops-infrastructure/container-deployment.md) — Packages the server and dependencies into portable images for consistent execution across environments.
- [Containerized Deployments](https://awesome-repositories.com/f/devops-infrastructure/containerized-deployments.md) — Ensures consistent application execution via standardized container packaging.
- [Containerized Server Deployments](https://awesome-repositories.com/f/devops-infrastructure/containerized-server-deployments.md) — Provides a pre-configured container image to bootstrap the server environment with database connections. ([source](https://github.com/rethinkdb/horizon/blob/next/Dockerfile.dev))
- [Backend Frameworks](https://awesome-repositories.com/f/devops-infrastructure/containerized-server-deployments/backend-frameworks.md) — Delivers the entire server environment and dependencies as a portable container image for rapid deployment.
