Skip to content
Snippets Groups Projects

Skeleton Web App

Installation Process

Clone this repository using your favorite method, then:

$ python3 -m venv compendium-v2
$ .compendium-v2/bin/activate
$ pip install -r requirements.txt
$ tox -e py39

Overview

This module implements a Flask-based webservice and in-browser React front-end.

The webservice communicates with the front end over HTTP. Responses to valid requests are returned as JSON messages. The server will therefore return an error unless application/json is in the Accept request header field.

Configuration

This app allows specification of a few example configuration parameters. These parameters should be stored in a file formatted similarly to config-example.json, and the name of this file should be stored in the environment variable SETTINGS_FILENAME when running the service.

Building the web application

For instructions on building the React frontend see webapp/README.md.

Running this module

This module has been tested in the following execution environments:

  • As an embedded Flask application. For example, the application could be launched as follows:
$ export FLASK_APP=compendium_v2.app
$ export SETTINGS_FILENAME=config-example.json
$ flask run

See https://flask.palletsprojects.com/en/2.1.x/deploying/ for best practices about running in production environments.

Importing the historical data

Pip install can use the setup.py file to register the click cli commands:

pip install --editable .
survey-publisher-v1
survey-publisher-2022

Creating a db migration after editing the sqlalchemy models

cd compendium_v2
alembic revision --autogenerate -m "description"

Then go to the created migration file to make any necessary additions, for example to migrate data. Also see https://alembic.sqlalchemy.org/en/latest/autogenerate.html#what-does-autogenerate-detect-and-what-does-it-not-detect

Note that starting the application applies all upgrades.