API for bicycle infrastructure dashboard, created for Brussels Mobility. The API fetches and processes raw data, as well as data fetched from Mobigis, and provides a way to access this data.
Specific routes, their paramters and return types can be found in the documentation,
which is accessed by following the trivial route: /
The API can be run in Python on your local operating system for develompent and debugging purposes.
Prerequisites are:
Run the following commands from the cycling-up-backend directory:
$ pipenv install --dev && pipenv shell # Install pipenv packages
$ cp .env.example .env # Add the .env file
$ python3 process/__init__.py # Initialize required data
$ python3 app.py # Start the embedded Flask server
Now the API can be accessed at http://localhost:5000
You can build the application as a Docker image and run it:
- using the start.sh script
$ bash start.sh
- or manually
$ docker build --tag cycling-up-api .
$ docker run -it -p 5005:5000 --rm cycling-up-api
Now the API can be accessed at http://localhost:5005
The most important files and a small description are listed here:
cycling-up-backend | ├── Dockerfile # Configuration file for Docker. ├── Pipfile # List of required Python libraries (used by pipenv). ├── app.py # Main implementation file of the backend app. ├── config.py # Contains most of the the configuration variables. ├── start.sh # Bash script to execute the Docker image. Used in the production server. ├── api # Directory with all code needed to run API. │ ├── error_handlers.py # Defines error handlers for all supported HTTP error codes. │ ├── getters.py # Defines all getters for retrieving requested data. │ ├── routes.py # Defines all supported API routes. │ └── swagger # Directory with all .yml API documentation files (used by flassger) │ └── ... ├── data # Directory from where API fetches data. │ └── ... ├── date_matching # Directory with everything needed to match construction dates to infrastructure. │ └── ... ├── process # Directory with everything required for populating /data directory. │ ├── base_data # All raw data (to be updated manually). │ │ └── ... │ ├── charts # Scripts for populating data/charts directory. │ │ └── ... │ ├── construction_date # Scripts for populating data/infra_dates directory. │ │ └── ... │ ├── fetch_mobigis # Scripts for populating data/mobigis directory. │ │ └── ... │ └── __init__.py # Runs all required scripts for populating the data/ directory properly. └── ...