Skip to content


Subversion checkout URL

You can clone with
Download ZIP
RESTful task tracking experiment built with webmachine
Erlang JavaScript Shell
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


ScrumJet: RESTful task tracking experiment built with webmachine

ScrumJet's experimental premise is simple: I wanted to learn more about webmachine. Basic task tracking is a fairly simple thing to implement and has lots of obvious ways to link things together.

Running the Experiment


  • Mercurial (to get webmachine)
  • Erlang/OTP

Shell 1:


Shell 2:


Open in a web browser.


REST(Representational State Transfer) is an architectural style which can be applied well to such a system and webmachine makes it easy to implement in Erlang.

Overall Architecture

ScrumJet is broken out into resources for tasks, categories, boards and utility resources for representing linkages amongst them. Much of the motivation for this architecture came from reading O'Reilly's book RESTful Web Services. As such it focuses on providing a well-connected HTML representation of each resource. I am likely to eventually add JSON representations to the resources for efficiency, but my goal at the moment is a proper RESTful architecture. I find it easier to achieve that in HTML.

Part of the motivation for this architecture is a secondary educational goal of learning how to build an ARIA on top of a RESTful web service using Dojo. Obviously Dojo prefers JSON so some ScrumJet resources are also able to represent themselves as JSON. It is an end-goal that all resources in ScrumJet will be able to do this.

Underlying Architecture

ScrumJet's resources are implemented as webmachine resources. Each resource generates an HTML representation based on state stored in one or more mnesia tables. Specifically, each resource uses a gen_server to work with its primary state in an mnesia table and uses the gen_servers of other resources to determine connections or links to be rendered in the representation.

Something went wrong with that request. Please try again.