The starting point is Jaisiel Delance’s basic MVC pattern. The project is defined as two applications: the front end and the back end.
I begin with the back end, adding a layer of abstraction through components. A few basic components are defined, together with an interface for creating them.
In the front end, I introduce the concept of a page and, therefore, of a module. A drag-and-drop library is used to create pages in the back end. It is adapted to the system and extended to support dynamic modules. Finally, the page concept provides the basis for an on-demand caching system.