Whether your poison is any possible combination of models, views, controllers, view models, and/or presenters, Gilgamesh supports it.


A no fuss connector to Socket.IO on both the client and the server. Build a network of connections using an easy-to-understand feature set.


Uruk is a tidy micro-templating engine that blends HTML and JavaScript together into one harmonious template.


Enkidu is a server-side implementation of using Node.JS. Build applications using the same framework on both the server and client.


Like the mortar of its namesake, Bitumen builds the house around which rests, adding new functionality and capabilities to your work. Use what's available or create your own plugins with Bitumen.


Ziggurat is an application builder, allowing you to build both client and server applications with ease.

Get started in one line of code!

“Hello, world!” is a classic. All developed on a single line in

(client = shell.framework().client())
  .view({'source': client.template('Hello, world!')})

Traditional, but a tad boring. Let’s spice it up a little with some data binding.

<section %input oninput="what(this.value);" value="{%= what(); %}" />
<section %h2>Hello, {%= what(); %}!</section>

The use of a few partials (<section /> tags inside templates) binds the observable (what) within specific displays.

(client = shell.framework().client())
  .view({'source': document.getElementById('example-2-source')})
  .show({'what': client.framework.observe('world')});

Using an observable we are easily able to create a new data model for observation, allowing us to connect the data directly to our presentation with little work on our part.