Skip to content

waymarkedtrails/waymarkedtrails-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Waymarked Trails - API frontend

Waymarked Trails is a website that shows recreational routes from OpenStreetMap and lets you inspect the routes and selected details.

This repository contains the API frontend. It is implemented with hug.

Installation

The API depends on the following packages:

For the elevation profiles these additional packages are needed:

On Ubuntu/Debian, the following command should install all required dependencies:

sudo apt install python3-numpy python3-scipy python3-gdal \
                 python3-falcon python3-slugify

The hug package in Debian is too old. You need to get it via pip instead. If you haven't done so yet, create a virtual environment for waymarkedtrails and enter it:

virtualenv -p python3 --system-site-packages wmtenv
. wmtenv/bin/activate

Then install hug:

pip install hug

The wmt_api pacckage can simply be installed with pip:

pip install .

Running the API

The API needs a database provided by the waymarkedtrails-backend package. See its documentation how to set up the database.

The API is a WSGI application. Run it with your favourite WSGI server. Set the WMT_CONFIG environment variable to choose the flavour.

For example, to run the waymarkedtrails API for the hiking map with uwsgi for development purposes. First install uwsgi:

sudo apt install uwsgi-plugin-python3

Then run the API in development mode:

export WMT_CONFIG=hiking
uwsgi --plugin python3 --py-auto-reload 1 --socket 127.0.0.1:8080 --protocol=http --wsgi wmt_api.frontend

To set up uwsgi for production, please consult its documentation.

Warning: the code is not compatible with ujson. If you get an error message

TypeError: 'Type[ujson] is not Serializable'

then either make sure that ujson is not installed in your virtualenv or force hug to use the built-in json library by setting the environment variable HUG_USE_UJSON to the empty value:

export HUG_USE_UJSON=

License

The source code is available under GPLv3. See COPYING for more information.