# Photowall API 2 Provides a REST API to Photowall database. ## Installation Make sure that your system has Python version 3.6 installed. Next its recommended that you create a [virtualenv](http://docs.python-guide.org/en/latest/dev/virtualenvs/) of python 3.6 and install all packages in it. To do that execute the following commands in your project folder: ``` $ virtualenv -p /usr/bin/python3.6 venv $ source venv/bin/activate $ pip install -r requirements.txt ``` ## Local testing with docker Make sure you edit `docker-compose.yml` with correct environment variables. This will launch the production image and listen on port 1881. ``` $ docker-compose up --force-recreate --build -d ``` ## Documentation Documentation is available [here](docs) ## Configuration First copy config.sample.py to config.py. This file will be read by the application on startup. List of available configuration options: | Name | Description | | ---- | ----------- | | `SQLALCHEMY_DATABASE_URI` | Database connection string. e.g: `postgresql://user:password@localhost/photowall` | | `DEBUG` | Enable/disable debug mode | | `API_KEYS` | A list of api keys that are used to authenticate to the API. If this list is empty authentication will be disabled. | | `BERNARD_QUEUE_URL` | URL to Bernard queue (used for running Photowall background tasks) ## Getting started Starting the application: `$ python manage.py runserver` ## Release and development process New branches are cut from `master` and when it is ready for test and code review a pull-request is created and the branch is deployed to the staging environment after checking that the staging environment is free to deploy to. A deploy to the staging environment is done using fab: ```sh $ fab staging deploy ``` The staging branch is automatically synced from master on new commits to master. ## Testing To run unit tests: `$ python -m unittest` ## Performance testing with Locust Run locally ``` $ pip install locust $ USERNAME=user locust --host=http://localhost:1881 ``` . .