Developer Guide

This guide is addressed to developers. It contains technical details about the spree framework

Framework description

Client side requests arrive at the nginx web server which also acts as load balancer forwarding the requests to different cherrypy application servers. This setup was chosen as cherrypy (python) does not scale well over more than one processor. The cherrypy servers only differ in the port they are running on. All cherrypy servers rely on the same database. Static content is not forwarded by nginx but directly served in order to save performance. The database is constantly updated and optimized by background jobs.

For more information on the framework modules follow these links:

Information about the load balancer (nginx)

Load Balancer

Information about the application server (cherrypy)

Application Server

Information about additional processes on the server-side

Server-side processes

Installation & Deployment

In order to get spree running you will have to install Turbogears and additional packages. Details are provided here.

This page describes how to setup a distributed solution using a load balancer.

Ontology customization

If the ontology provided by spree does not fit your needs a customized ontology can be created with the scripts located in the server/scripts/ontload directory. Please follow the instructions in the README file.

Additional tools

During the spree development you might have to use one or more of the following tools:

  • On the client side spree strongly profits from the MochiKit javascript library.
  • Spree uses widgets from the dojo-toolkit. The Dojo Packer bundles the necessary dojo javascript classes and provides compression.
  • Additional javascript code is optimized by the javascript packer.
  • HTML code documentation is auto-generated using PyDoc. See here for details.