# Rookeries

A developer and designer friendly web platform for building gorgeous sites, blogs and portfolios.

**Rookeries** is:

- Powered by Flask, Python and PostgreSQL on the server side.
- Uses preact, redux, ES2017 and webpack to build responsive single page apps.
- Licensed under the Affero GNU General Public License (AGPL) version 3.0.

## Build Status:

- **CircleCI**: [![CircleCI](https://circleci.com/bb/dorianpula/rookeries.svg?style=svg)](https://circleci.com/bb/dorianpula/rookeries "CircleCI builds")
- **Docker**:
[![](https://img.shields.io/docker/automated/dorianpula/rookeries.svg)](https://hub.docker.com/r/dorianpula/rookeries/ "Docker Hub")
[![](https://img.shields.io/docker/pulls/dorianpula/rookeries.svg)](https://hub.docker.com/r/dorianpula/rookeries/ "Docker Hub")
[![](https://img.shields.io/docker/stars/dorianpula/rookeries.svg)](https://hub.docker.com/r/dorianpula/rookeries/ "Docker Hub") 
[![](https://images.microbadger.com/badges/image/dorianpula/rookeries.svg)](https://microbadger.com/images/dorianpula/rookeries "Rookeries Docker size courtesy of microbadger.com")

## Installation

*Rookeries* is heavily under development and once things stabilize there will be a user friendly installation guide.
In the meantime, please refer to the development guide below.

## Development

*Rookeries* uses the following technologies:

- Python 3.6
- NodeJS 8 + ES2017
- PostgreSQL 9.6
- Docker + docker-compose

### Getting Started

**Rookeries** requires newer versions of Docker (<1.9.0) and docker-compose (<1.8.0).

1. [Install docker-compose](https://docs.docker.com/compose/install/)
1. Build Rookeries: `make build`
1. Run tests: `make test`
    - `make test-api` to run API server tests.
    - `make test-ui` to run UI tests.
1. Run demo: `make demo`
1. Run the invoke scripts on a running Rookeries container with: `docker-compose exec rookeries inv $MY_TASK`
    - Use `inv -l` to list the available invoke tasks.
1. When running the demo, navigate to the main Rookeries page in a browser: [http://localhost:5000/](http://localhost:5000/)

### Tips and Tricks

- [Visually Debugging UI Tests using VNC](https://github.com/SeleniumHQ/docker-selenium#debugging)
