Horizon is a realtime, open-source backend for JavaScript apps.
JavaScript Other
Switch branches/tags
Clone or download
Latest commit 6e16c61 Jun 28, 2017
marshall007 committed Jun 28, 2017 Merge pull request #860 from funkytek/next
per #697, quick fix to get rethink started in docker
Failed to load latest commit information.
assets Added illos to readme file (#317) May 2, 2016
cli add options to limit simultaneous connections (#714) Sep 15, 2016
client fix `toString` Oct 23, 2016
examples Adapt the code to meet the community's expectations Nov 1, 2016
rfcs Identity management RFC (#151) May 18, 2016
server add options to limit simultaneous connections (#714) Sep 15, 2016
test Fix CLI tests (#696) Aug 3, 2016
.dockerignore Updates to Dockerfiles and fixes to docker-compose recipes (#603) Jun 27, 2016
.eslintrc.js fix eslint violations in the server and cli (#453) May 20, 2016
.gitignore hz schema streamlining (#679) Jul 27, 2016
CONTRIBUTING.md Fix path for clone Apr 8, 2016
Dockerfile Adding git which is a npm dependency Jul 28, 2016
Dockerfile.dev Updates to Dockerfiles and fixes to docker-compose recipes (#603) Jun 27, 2016
GETTING-STARTED.md Update GETTING-STARTED.md (#530) May 27, 2016
ISSUE_TEMPLATE.md Comment out issue template (#618) Jun 27, 2016
LICENSE Doin it right May 17, 2016
README.md Readme purge and redirecting to horizon.io (#503) May 24, 2016
circle.yml circle.yml pruning (#674) Jul 26, 2016
docker-compose.dev.yml per #697, quick fix to get rethink started in docker Dec 28, 2016
docker-compose.prod.yml per #697, quick fix to get rethink started in docker Dec 28, 2016
github-banner.png Horizon has been fused. Apr 9, 2016
horizon.png Getting Started guide (#233) Apr 13, 2016
protocol.md Add keepalives to the websocket protocol (#621) Jun 29, 2016
update_versions.py chore: update script for versions (#759) Aug 20, 2016




What is Horizon?

Horizon is an open-source developer platform for building sophisticated realtime apps. It provides a complete backend that makes it dramatically simpler to build, deploy, manage, and scale engaging JavaScript web and mobile apps. Horizon is extensible, integrates with the Node.js stack, and allows building modern, arbitrarily complex applications.

Horizon is built on top of RethinkDB and consists of four components:

  • Horizon server -- a middleware server that connects to/is built on top of RethinkDB, and exposes a simple API/protocol to front-end applications.
  • Horizon client library -- a JavaScript client library that wraps Horizon server's protocol in a convenient API for front-end developers.
  • Horizon CLI - hz -- a command-line tool aiding in scaffolding, development, and deployment
  • GraphQL support -- the server will have a GraphQL adapter so anyone can get started building React/Relay apps without writing any backend code at the beginning. This will not ship in v1, but we'll follow up with a GraphQL adapter quickly after launch.

Horizon currently has all the following services available to developers:

  • Subscribe -- a streaming API for building realtime apps directly from the browser without writing any backend code.
  • Auth -- an authentication API that connects to common auth providers (e.g. Facebook, Google, GitHub).
  • Identity -- an API for listing and manipulating user accounts.
  • Permissions -- a security model that allows the developer to protect data from unauthorized access.

Upcoming versions of Horizon will likely expose the following additional services:

  • Session management -- manage browser session and session information.
  • Geolocation -- an API that makes it very easy to build location-aware apps.
  • Presence -- an API for detecting presence information for a given user and sharing it with others.
  • Plugins -- a system for extending Horizon with user-defined services in a consistent, discoverable way.
  • Backend -- an API/protocol to integrate custom backend code with Horizon server/client-libraries.

Why Horizon?

While technologies like RethinkDB and WebSocket make it possible to build engaging realtime apps, empirically there is still too much friction for most developers. Building realtime apps now requires understanding and manually orchestrating multiple systems across the software stack, understanding distributed stream processing, and learning how to deploy and scale realtime systems. The learning curve is quite steep, and most of the initial work involves boilerplate code that is far removed from the primary task of building a realtime app.

Horizon sets out to solve this problem. Developers can start building apps using their favorite front-end framework using Horizon's APIs without having to write any backend code.

Since Horizon stores data in RethinkDB, once the app gets sufficiently complex to need custom business logic on the backend, developers can incrementally add backend code at any time in the development cycle of their app.

Get Involved

We'd love for you to help us build Horizon. If you'd like to be a contributor, check out our Contributing guide.

Also, to stay up-to-date on all Horizon related news and the community you should definitely join us on Slack, follow us on Twitter, and join our Horizon mailing list at Horizon.io.


Check out our FAQ at horizon.io/faq

How will Horizon be licensed?

The Horizon server, client and cli are available under the MIT license