The high-level design is divided into 3 blocks: the controller, database and website.
The benefit of this arrangement is that there is a clear separation of duties between the controller and the website. I exploited this opportunity to code them in different languages: python for the controller and php for the website. This allows each component to be coded in the language best suited to its needs, with no compromises.