It makes Waffles.
Python Shell Puppet Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


It makes Waffles (and other tasty things)!

Build Status Coverage Status

To develop on this project follow these steps:

  1. Download the code
  2. Vagrant up!
  3. Create the database schema
  4. Run Batter
  5. Contribute changes!

Download the code

You can get the most recent copy of Batter by cloning this repository:

git clone git://

which will copy all of Batter into a new folder called batter.

Vagrant up!

Vagrant is a way to create and configure lightweight, reproducible, and portable development environments. We use it to keep the Batter runtime in sync across our machines. Download it and then cd vagrant followed by vagrant up to create your working development environment. Once your environment has been created, run vagrant ssh and follow the next two instructions.

Create the Database Schema

In your terminal, type

(batter) $ python batter/batter/ syncdb
(batter) $ python batter/batter/ migrate

Run Batter

In your terminal, type

(batter) $ python batter/batter/ runserver

You should now be able to open your browser to http://localhost:8080/ and use the site.

Yes, you're running the server on port 8000 in your vagrant environment, but vagrant port-forwards environment:8000 to localhost:8080.

Contribute changes!

So you want to contribute to Batter, you devilishly smart and attractive person? Awesome!

First off, fork the wafflesfm/batter repository to your own github account. After you've cloned your own fork, add the wafflesfm repo as the upstream remote with

$ git remote add upstream

(If you have commit access to wafflesfm/batter, you don't need to fork or add the upstream remote. The rest of this section still applies to you!)


Please follow these coding standards when writing code:

  • Poocoo [styleguide] poocoo for all Python code.
  • For Django-specific code follow internal Django [coding style] django.
  • Additionally, since we want Batter to be Python3 compatible, make sure your code complies with Django [guidelines] python3 on Python3 compatibility.


We want Batter to be translatable, so please use Django's builtin internationalization helpers for all strings displayed to the user.


We use git-flow for our git workflow. Debian/Ubuntu users can sudo aptitude install git-flow, and users of other operating systems can find installation instructions here.

Once you have git-flow installed, you need to set it up for your batter repository. Setting up git-flow is a one-time thing. After you clone the repository and installed git-flow, navigate to your batter project folder and run

$ git flow init

Accept all the defaults. After the setup wizard is done, your "stable" branch should be master, "development" branch should be develop, "feature" prefix should be feature, "release" prefix should be release, "hotfix" prefix should be hotfix, and "support" prefix should be support.

After this, you can use git flow to work on new features or fix existing ones. The following articles should help you understand how git-flow works.

It is strongly recommended that even committers who have access to the repository use GitHub pull requests to merge their code. If you do this, then our code testing and code coverage tools will automatically tell you if what you are about to merge is going to break everything, and will automatically remind you to write any necessary tests.