Date: 2019-09-25
Accepted
We've chosen a monolith approach for this application. One of the consequences is that we have to think about the application structure in advance.
We'll structure the application as follows:
The app layer only contains models (Candidate, Application, etc) and services (things to change state). It has no controllers or views.
The user-facing functionality is split into 3 components: Candidate, Provider and Vendor API. These namespaces do not talk to each other, but only to the app layer. Each component has their own controller hierarchy, own views, mailers, and component-specific services.
We'll try to use the proposed structure. We need to regularly review the structure to see if it's still appropriate.