Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

RESTful task tracking experiment built with webmachine

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 docs
Octocat-spinner-32 ebin
Octocat-spinner-32 include
Octocat-spinner-32 priv
Octocat-spinner-32 src
Octocat-spinner-32 .gitignore
Octocat-spinner-32 Emakefile
Octocat-spinner-32 Makefile
Octocat-spinner-32 README.markdown
Octocat-spinner-32 load-test-data.sh
Octocat-spinner-32 start-client.sh
Octocat-spinner-32 start-dev.sh
Octocat-spinner-32 start.sh
README.markdown

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

Pre-requisitites:

  • Mercurial (to get webmachine)
  • Erlang/OTP

Shell 1:

make
./start-dev.sh

Shell 2:

./load-test-data.sh

Open http://127.0.0.1:8000/ in a web browser.

Motivation

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.