Platform Extensibility
One of our core values driving the development of StoreBuilder is to provide the ultimate in flexibility, customization and extensibility. If you have any experience developing website you'll know how often a platform promises the world, but falls short in some small specific way that is of course pivotal for your project requirements. Or how often a platform says "we support all those features via plugins/add-ons" only to find out later that Plugin A won't work with Add-on B after paying a big consulting fee for Customization C.
StoreBuilder provides a number of mechanisms for extensibility including ViewModel extensibility, Data model eventing, Data Model Custom Properties.
ViewModel Extensibility
The ViewModel architecture in StoreBuilder allow for ViewModel Mixins (multiple inheritance) as well as ViewModel Extenders (for data transformations, formatting, etc).
For example the base ProductViewModel class can be extended by both a ProductReviews plugin and a YouTube plugin. Both plugins will "mixin" additional properties to our ProductViewModel in order to expose product rating data and youtube videos. Neither plugin is exclusive of the other. And if you want to transform the data provided by either plugin you can add your own custom ProductViewModel extender to to transform/format any data in the ViewModel.
This makes it so that not only can the core product be extended, but even proprietary StoreBuilder plugins and add-ons have an open development layer where you can adjust the ViewModel and Handlebars templates to achieve your project objectives.
Data Model Eventing
All data models in StoreBuilder expose events which are triggered when records are inserted, updated, trashed, or deleted in the database. Plugins or your custom code can subscribe to the data events so you can perform some custom action when something happens in StoreBuilder.
Custom Properties
Most data models in StoreBuilder can be extended with Custom Properties.