Gilgamesh

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

Tigris/Euphrates

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

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

Enkidu

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

Bitumen

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

Ziggurat

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 sumerian.io.

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

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.