Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Drawn By is a collaborative real-time sketching app built for the 2011 Django Dash.
JavaScript Python
Branch: master
Failed to load latest commit information.
conf Setup for redis
core port is int
static Upgrade to latest gevent-socketio
templates Disable js compression - causing js errors.
.hgignore Save images to disk for thumbnailing
LICENSE Changed LICENSE from 3-clause to 2-clause BSD.
README.rst Add authors and urls to README Try and restart the app properly Initial login/logout with social auth Initial project layout
requirements.txt Add deps for deployment. relax perms since we didn't get to do posting Add admin


DrawnBy is a collaborative drawing app built by Josh de Blank, Travis White and Stephen McDonald for the 2011 Django Dash. Users are able to create new drawings which anyone can contribute to in real-time. Drawings can then be saved to the DrawnBy gallery where users can view and vote on their favourite drawings.

Technical Overview

Aside from Django, DrawnBy brings together several unique technologies. The HTML5 canvas API is used to implement client-side drawing features. These interactions are then sent over the wire using websockets via Socket.IO. gevent is used on the server to maintain long running requests, and the key-value server Redis is used to store all drawing interactions.


DrawnBy was built on Ubuntu 10.04 VPS provided by Linode. The following packages are required and can be installed via apt:

sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install python-pip
sudo apt-get install python-imaging
sudo apt-get install libevent-dev

Redis can be downloaded, built and run with the following commands:

tar -xf redis-2.2.12.tar.gz
cd redis-2.2.12
sudo make

Development of DrawnBy is managed using the Mercurial version control system and hosted on BitBucket. With Mercurial installed, clone the repository with the following command:

hg clone

The required Python packages can then be installed via pip with the following command from the newly created drawnby project directory:

cd drawnby
sudo pip install -r requirements.txt

A database is then required. By default DrawnBy is configured for a SQLite database. Consult the django documentation for configuring other database servers. Once configured, the database can be created running the following commands:

python syncdb
python migrate

To handle websockets, DrawnBy requires a custom server based on gevent. As such a management command is provided to run the project:

sudo python runserver_socketio

DrawnBy uses Twitter or Facebook to handle authentication. As such API keys are required for an app with eithe provider. Once API keys are obtained, rename the file in the drawnby project directory to and edit this file to set the keys where defined.

Something went wrong with that request. Please try again.