## Development

*Rookeries* uses the following technologies:
 - Python
 - NodeJS
 - CoffeeScript
 - GCC (for compiling some dependencies)

Make sure you have the following installed and setup before continuing:
- git
- pip
- virtualenv
- npm

comfortable using the bash shell on Linux or Mac OS X.  (Window users should install bash using
[cygwin](http://cygwin.com/) or the Windows App store.)

For development and deployment you'll also need [Vagrant](https://www.vagrantup.com/) and
[Ansible](http://ansible.com/).

### Getting Started

1. Clone this repository: `git clone https://bitbucket.org/dorianpula/rookeries.git`
1. Create a virtualenv and source it: `virtualenv rookeries && source rookeries/bin/activate`
1. Install the Python/PIP dependencies: `pip install -r requirement/development.txt`
    - *Ubuntu Linux*: You may need to install via `apt-get install` the following dependencies:
        - python-dev
        - libffi-dev
        - libssl-dev
1. Install the Node/NPM dependencies: `npm install`
1. Install the global Node/NPM dependencies: `npm install -g coffee-script browserify less karma-cli`
1. Run the invoke build script to run the application: `inv server.run`
1. Navigate to the main Rookeries page in a browser: [http://localhost:5000/](http://localhost:5000/)

Use `inv -l` to list all the available commands.

### Getting Started - Docker

This is a **very** _experimental_ setup, and requires installing the latest version of docker-compose.  Tested on 
Docker 1.11.1 & Docker Compose 1.7.1.

1. Install docker-compose via pip: `pip install docker-compose`
1. Install make via apt-get: `apt-get install make` 
1. Build Rookeries: `make build`
1. Run tests: `make test`
1. Run demo: `make demo`

### Test Deployment

You can also test the deployment of *Rookeries* to local server.  You'll need to install to have
[Vagrant](https://www.vagrantup.com/).  [Ansible](http://ansible.com/) should be installed in your virtualenv if
you followed the instructions above.

1. Install the Rookeries to a local Vagrant box with: `inv vagrant.install`
1. The application will be accessible via port 8080 locally: [http://localhost:8080/](http://localhost:8080/)
