.. -*- mode: rst -*-


This is a scrabble clone which uses HTML5's Canvas for the UI and Django and
Eventlet for the server. The goal is to make a scrabble clone which works on
iOS, Android and desktop machines.


There currently isn't a publicly accessible server, but you can run your own
server. Make sure you have redis running, see example_project/settings.py if
you want to change the redis settings. Then you can run the following commands
to get a running server::

  $ sudo apt-get install python-virtualenv python-pip python-dev build-essential redis-server zip # Dependencies for Ubuntu
  $ hg clone https://bitbucket.org/keegan_csmith/scrabble
  $ cd scrabble
  $ virtualenv --no-site-packages env
  $ source env/bin/activate
  $ pip install -r example_project/requirements.txt
  $ (cd data; ./fetch_dictionaries.sh)
  $ python example_project/manage.py syncdb
  $ gunicorn_django -k gunicornsupport.EventletWorker example_project/settings.py

You should now have a server running at http://localhost:8000/

Alternative WSGI Servers

If gunicorn isn't your thing, you can use eventlet.wsgi by just running::

  $ python run.py

or use spawning::

  $ spawning --processes=1 --threads=0 -p 8000 run.application


This section will explain deployment of the example application using nginx
and gunicorn. Follow the same steps as in the install section to setup the
example scrabble project. The next few steps assume the repository is cloned
into /home/ubuntu/scrabble. If it isn't you will need to modify the

  $ sudo apt-get install nginx
  $ sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
  $ sudo cp data/nginx.conf /etc/nginx
  $ sudo /etc/init.d/nginx restart
  $ cp example_project/settings_prod.example.py example_project/settings_prod.py
  $ vim example_project/settings_prod.py # Atleast change SECRET_KEY
  $ python example_project/manage.py syncdb
  $ python example_project/manage.py collectstatic
  $ gunicorn_django -c data/gunicorn_conf.py example_project/settings.py

You should now have a server running at http://localhost/

This setup uses nginx to serve the static files, as well as reverse proxy
requests to gunicorn.