Sandbox module
When we talk about a sandbox in our daily lives, we usually have a picture of a box full of sand in our minds, where we allow the kids to play and make all the mess they like - and hopefully only in that box.
In our modular architecture, we capitalize on the same concept and create spaces for our components to play in and to be isolated from other pieces of the application.
By sandboxing our modules in such a way, we eliminate tight coupling among our application components and the core module.
The sandbox is essentially a layer of abstraction as well as a thin interface between our components and the other pieces of our application.
As the sandbox module is designed to be an interface and to provide communication among our components and the rest of the application, it is considered a contract and, as such, it should never change. This is so our components can be sure that they can always count on a consistent layer of communication with the application as well as a certain level...