The core is structured as a modular non strictly layered monolith. The modules are categorized and spread across different directories.
<platform/src/Core/> └── Checkout └── Content └── Flag └── Framework └── Migration └── System └── Kernel.php └── [...]
Framework is the technical basis for Shopware.
Checkout contain the eCommerce functionality, everything else is configuration.
The relation between these different categories is shown in the diagram below:
The relationship between the
Framework directories is of course the most interesting.
Checkout provides the workflow and process management of Shopware 6. The Checkout process contains the Cart, Orders, Payment and Shipping as well as state management and customer management.
The whole structure follows a strict domain first approach. This means that you won't find a global
controllers directory, but instead will find domain concepts as the scope of a module. So what you will find is a
Product module or a
Inside each of these modules there is of course technical layering present. Shopware 6 employs a typical multitier architecture, with optional and required layers.
The required layers are
Data access with an optional
Business layer, depending on the complexity of the case.
The modules are structured with discoverability as the central objective. You should take away the following:
Aside from the
Framework where modules are layed out according to technical necessities, the eCommerce modules follow a rigid structure. Modules are categorized according to certain characteristics:
Although a module can contain all or any of the characteristics above, this is not required. Please refer to the list of modules and characteristics to get a full overview.