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.
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.
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:
wget http://redis.googlecode.com/files/redis-2.2.12.tar.gz tar -xf redis-2.2.12.tar.gz cd redis-2.2.12 sudo make ./src/redis-server
hg clone http://bitbucket.org/stephenmcd/drawnby
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 manage.py syncdb python manage.py 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 manage.py 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 local_settings.py.template file in the drawnby project directory to local_settings.py and edit this file to set the keys where defined.