Modular design is an approach to decompose complex systems into smaller, reusable building blocks to lower the complexity of the application.
It also makes it possible to create reusable, loosely coupled software components to improve code maintainability, software stability, and time to market.
Monolithic vs Modular
A monolithic application's codebase consists of tightly coupled pieces of code.
Monolithic applications provide ready-made solutions in a tight code structure, with hard dependencies between its units which makes a lot of assumptions about how the different parts of the code interact with each other.
This makes it easier to kickstart a project, but you have less control over the desired feature set.
It also makes it more difficult to modify, debug, test, and maintain different parts of your application.
Modular applications are built from independent, reusable building blocks.
Each module provides its own functionality that can be tested on its own, making the end product more extensible, reusable, maintainable, and adaptable.
You have more control over your codebase, it's easier to introduce new features or change existing ones.
Finding the missing core
Most software solutions (content management systems, ecommerce solutions, CRM software) have three different layers:
- Core: The main functionality and business logic maintained by the core team
- Contrib/vendor: Community templates, modules, and plugins
- Custom: Project-specific logic and view layer maintained by the project developer
This makes it possible to start building your projects on a reliable, well-tested stable core, and extend the basic functionalities with third party plugins and your own custom code.
Working with platformOS is a bit different.
PlatformOS gives you absolute control over your codebase: the app folder of your project is your territory, you as a developer have total freedom to implement any feature the way it works best for you.
This freedom is one of the core principles of the platform.
Still, we wanted to give you a standardized framework and ecosystem that provides ready-made, extensible building blocks to improve developer experience and speed to market.
app folder will remain the same: a place where your project code lives.
But from now on you'll have access to a set of high quality modules maintained by the core team and the community to solve common engineering problems and challenges using our reliable and flexible module system.
PlatformOS modules are independent, isolated, interchangeable building blocks. You can think of modules as a set of functions that do not directly depend on each other: modules can communicate and interact with each other, but the individual modules are replaceable and interchangeable.