.. _beardomatic-chapter: =========================================== Beardomatic: Infrastructure Documentation =========================================== What the hell is Beardomatic? ============================= You might be wondering, "Gah! What the hell is Beardomatic!?" Well, I'll tell you. GNU MediaGoblin is a piece of software that sits on a stack of libraries that do a bunch of stuff. It makes it easier to differentiate the bits of code that encompass GNU MediaGoblin from the bits of code that GNU MediaGoblin sit on top of. Thus, we came up with the TOTALLY AWESOME name Beardomatic. Now you might be saying, "Holy crap!? Another web framework? Are you going to write a mocking framework and an enumeration library, too!?" No, we're not. We're just calling this Beardomatic so that it's easier to talk about things. However, at some point, we can take these infrastructure bits from GNU MediaGoblin and turn them into a full-blown "web framework". We wouldn't do this to compete for mindshare with other web frameworks. We would do this to make it easier for us to bootstrap other similar projects. Beardomatic software stack ========================== Beardomatic is a software stack "web framework" composed of the following bits: * 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 How to ... in Beardomatic? ========================== FIXME - write this