Architecture ============ Backend ------- The backend is a `Flask `_ application which is expected to run on **Python 3.6+** using type annotations. The persistence layer is handled using SQLAlchemy via `Flask-SQLAlchemy `_. Database schema migrations are performed by `Alembic `_. The REST API follows the `JSON-API standard `_ using `Flask-REST-JSONAPI `_. API that fits an RPC model better than a REST model is serialized using `marshmallow `_ which is what **Flask-REST-JSONAPI** uses anyway. Frontend -------- The frontend framework is `React `_, using `Redux `_ for state management. The source is written in `TypeScript `_ and transpiled to ES5. The UI framework/CSS framework is `semantic-ui `_. We use the React components for this as well.