Stick is a modular JSGI middleware composition layer and application framework. View Stick on Github.


Stick is being developed on top of RingoJS, a server side JavaScript runtime, but it could be ported to other platforms supporting JSGI such as Common Node.

Stick provides an Application object that can be used to compose web applications out of JSGI middleware components. Middleware can in turn define methods or properties on the application object to make itself configurable to the outside world.

Currently Stick comes with the following middleware modules:

  • basicauth - basic HTTP authentication
  • continuation - generator-based async requests
  • error - generating error pages
  • etag - ETag based conditional GET
  • gzip - GZip content encoding
  • method - HTTP method overriding
  • mount - mounting other applications
  • notfound - generating 404 pages
  • params - form data parsing
  • profiler - JavaScript profiling
  • render - mustache.js templates
  • requestlog - collecting per-request log messages
  • route - Sinatra-like request routing
  • session - session support
  • static - serving static files
  • upload - handling file uploads

Check out the demo applications and documentation to learn more.

Installing and running Stick

If you are using rp you can install Stick with the following command:

rp install stick

Otherwise you can install the latest git snapshot using ringo-admin:

ringo-admin install hns/stick

Alternatively, you can manually copy or symlink the stick directory into the packages directory of your ringojs installation.

To start the stick demo application run the ringo command with the demo.js script in the stick directory:

ringo examples/demo.js

Then point your browser to http://localhost:8080/.


Stick is distributed under the MIT license.