.. _codebase-chapter:
========================
Codebase Documentation
========================
This chapter covers the libraries that GNU MediaGoblin uses as well as
various recipes for getting things done.
Software Stack
==============
* Project infrastructure
* `Python `_: the language we're using to write
this
* `Nose `_:
for unit tests
* `buildout `_: for getting dependencies,
building a runtime environment, ...
* Data storage
* `MongoDB `_: the document database backend
for storage
* Web application
* `Paste Deploy `_ and
`Paste Script `_: we'll use this for
configuring and launching the application
* `WebOb `_: nice abstraction layer
from HTTP requests, responses and WSGI bits
* `Routes `_: for URL routing
* `Beaker `_: for handling sessions
* `Jinja2 `_: the templating engine
* `MongoKit `_: the lightweight
ORM for MongoDB we're using which will make it easier to define
structures and all that
* `WTForms `_: for handling,
validation, and abstraction from HTML forms
* `Celery `_: for task queuing (resizing
images, encoding video, ...)
* `RabbitMQ `_: for sending tasks to celery
* Front end
* `JQuery `_: for groovy JavaScript things
Recipes
=======
FIXME - write this