Monolithic design
This section presents extracts from the source code of the monolithic version of Runnerly. The whole application can be found at https://github.com/Runnerly/monolith, if you want to study it in detail.
A design pattern that is often referred to when building applications is the Model-View-Controller (MVC), which separates the code into three parts:
- Model: This manages the data
- View: This displays the Model for a particular context (web view, PDF view, and so on)
- Controller: This manipulates the Model to change its state
While it's clear that SQLAlchemy can be the Model part, the View and Controller distinction can be a bit vague when it comes to Flask because what is called a view is a function that receives a request and sends back a response. And that function can both display and manipulate the data. So it can act as a View and as a Controller.
The Django project uses the Model-View-Template (MVT) acronym to describe that pattern, where View is the Python callable, and Template...