explaingit

rethinkdb/horizon

6,737JavaScriptAudience · developerComplexity · 3/5Setup · moderate

TLDR

Horizon is an open-source backend platform built on RethinkDB that lets front-end JavaScript developers add live data sync, user authentication, and permissions to web apps without writing any server code.

Mindmap

mindmap
  root((horizon))
    What it does
      Realtime backend
      No server code needed
      RethinkDB bridge
    Features
      Live data sync
      User auth OAuth
      Permission rules
      Presence detection
    Tech Stack
      JavaScript Node.js
      RethinkDB
    Use Cases
      Chat apps
      Shared documents
      Realtime dashboards
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a real-time chat app where all users see new messages instantly without page refreshes, using only the Horizon client library.

USE CASE 2

Add Google or GitHub login to a front-end app without writing any server-side authentication code.

USE CASE 3

Sync a shared to-do list across multiple browser tabs in real time using live data subscriptions.

USE CASE 4

Start an app with Horizon's API and later add custom Node.js business logic when the app outgrows what Horizon provides.

Tech stack

JavaScriptNode.jsRethinkDB

Getting it running

Difficulty · moderate Time to first run · 30min

Requires a running RethinkDB instance alongside the Horizon server before the client library can connect.

In plain English

Horizon (originally called Fusion during development) is an open-source backend platform for building realtime web applications with JavaScript. It is built on top of RethinkDB, a database designed to push live data updates to applications as changes happen. The project's main goal is to let front-end developers build modern, connected apps without having to write any server-side code from scratch. The platform has two parts working together. The server component runs alongside RethinkDB and handles all the data operations, acting as a bridge between the database and the browser. The client library is a small JavaScript package that developers include in their front-end code to communicate with that server. Together they let a browser tab read and write data, and receive live updates when other users change something, all without the developer needing to set up their own API routes or server logic. The services Horizon planned to expose include live data streaming, user authentication through providers like Google or GitHub, user account management, permission controls to restrict data access, and presence detection to track whether a user is online. These cover the common building blocks that show up in most modern web applications. The project is designed to grow with an application. If a project stays simple, developers can use Horizon's API for everything. Once the app needs custom business logic that Horizon does not cover, developers can add their own backend code in Node.js, Python, or any other language, and that code can talk directly to RethinkDB with full access to its features. The README compares Horizon to Firebase and Meteor. Unlike Firebase, it is self-hosted and open-source. Unlike Meteor, it is a narrower tool that does not impose a particular front-end framework or full-stack structure.

Copy-paste prompts

Prompt 1
Show me a minimal HTML page that connects to a Horizon server, writes a message object to a collection, and listens for live updates from other users.
Prompt 2
I want to add GitHub OAuth login to my Horizon app. What goes in horizon.json and how do I read the logged-in user on the client side?
Prompt 3
How do I set Horizon permission rules so users can only read and write their own records and cannot access other users' data?
Prompt 4
Walk me through starting a new Horizon project from scratch: install Horizon, start RethinkDB, run the Horizon server, and test a write from the browser.
Open on GitHub → Explain another repo

← rethinkdb on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.