Framework First
The Framework First principle we use to build the platform is the single most important thing we do. We know from the +10 years of experience we have with commerce, that every project is not a like, and it is not a matter of if you need to change the behavior of the platform, but rather when you need to change it.
This is why the architecture of Ucommerce is built with extensibility in mind. In everything we do, we think framework and extensibility into to feature set. This means that regardless of the feature or area you're working with, you can modify the platform to fit the clients needs.
Let's take a look at just a few examples:
- If you don't like the default URL handling, you can replace it.
- Prices only exists in the ERP system? Adjust the pricing service to look up the price in a separate system.
- Tax rules are different from what's in the platform! You can define your own rules and replace the tax component in Ucommerce.
- Need to get the live inventory number from ERP on checkout? Add a custom Task to the BasketPipeline.
- Need to give gold customers a special discount? Add a new Marketing target.
- Need to import products into Ucommerce from an ERP? Ucommerce has APIs for all entities that can be used.
The true value of Ucommerce is not what is delivered out-of-the-box, but how you can change anything to fit the business requirements. The examples above are put to illustrate that whatever needs tweaking you can do it.
How is this all possible?
Well that requires a technical explanation. Ucommerce makes use of a DI container called "Castle windsor" that allows you to replace the code that runs. Ucommerce makes use of a design principle called [SOLID](https://en.wikipedia.org/wiki/SOLID)
which is a set of principles that allows you to build flexible software. Not only does it enable agencies with no access to the source code to tweak the platform, it also becomes a pleasant experience to do so.