.. _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