zetta

The runtime components for Zetta.

![Gitter](https://badges.gitter.im/Join Chat.svg)

What is it?

Zetta is an open source Node.js based platform for the internet of things. It's a complete toolkit for generating HTTP APIs for devices. Zetta is protocol agnostic meaning that it can support almost all device protocols, and mediate them to HTTP. Zetta was built from the ground up to solve specific problems around generating consistent interfaces for devices, and allowing to stream real time state of devices.

Getting started with Zetta

This is the quintessential "Hello World!" program for Zetta. This program will generate your first Zetta UI for a particular server.

var zetta = require('zetta');
 
zetta()
  .name('hello.world')
  .listen(1337);

Key Concepts

JavaScript

Zetta has developers express devices as state machines using an elegant and expressive syntax. Zetta is a completely nodejs based framework that is cross platform, and easily deployable to multiple cloud services.

APIs

Zetta then takes that JavaScript, and generates a consistent Hypermedia HTTP API for those devices. Our HTTP APIs are expressed using the Siren specification. We also expose websocket endpoints to stream real time events out of the Zetta system. This paradigm of merging Hypermedia with websocket streaming is also known as Reactive Hypermedia.

Queries

Zetta has a robust query system that allows you to not only search for devices, but also subscribe to websockets to be notified when new devices come online that fulfill the query. The queries have a SQL-like syntax that makes it easy to wrangle devices in the API, and Zetta itself.

Apps

Zetta also allows you to write stateless applications that live in the server itself. You can query for devices, and wire up interactions between them in these applications. These apps will run consistently whether or not your hub has internet connectivity.

Peering

Zetta can create persistent connections between servers to expose APIs in new and unqiue ways. You can peer a Zetta server in your home with a server in the cloud, and allow for access to devices on the open internet.

Installation

Retrieving the Zetta package is fairly straight forward.

git

git clone git@github.com:zettajs/zetta.git && cd zetta
 
npm install

NPM

npm install zetta

Community

The Zetta community is steadily growing. We have a few channels that you can talk to the Zetta team on.

You can also file an issue on our github issues page.

Docs

Visit our site at http://zettajs.github.io/ for documentation, and recipes for building systems with Zetta.

MIT