Skip to content

Architecture

Simon Larsson edited this page Feb 29, 2024 · 2 revisions

Most of the work has been done on the backend side of the system, with the frontend being somewhat low priority.

Backend

The backend is composed of many different parts, as can be seen in the figure below.

  • Flask (Python web-framework): dynamically loads pages and content and communicates with the database.
  • MySQL: database management system.
  • Docker: provides containerization for Flask and MySQL, so that each of them runs in an isolated environment with the correct dependencies.
  • Ansible: provides OS automatization and safe access to secrets.
  • Github: version control and code hosting.
  • Github Actions: allows for continuous deployment and testing.
  • DigitalOcean: hosting provider.

Frontend

The frontend is served by Flask and created by a combination of Bootstrap and manual HTML, CSS and JavaScript.

Implementation

The system is implemented according to the Flask documentation: blueprints (Python files) are responsible for loading and modifying HTML templates and relevant assets. Helper functions are used for defining queries and transactions and for all other responsibilities that are not directly rendering HTML templates.