
Case study
Nationwide, multi-shop commerce
AdvantITge uses Vendure as the basis of a multi-shop e-commerce platform
We are AdvantITge, a Belgian team of web developers that provide fully customizable webshops for mid-to-large sized companies, including retail chains with a large networks of distributed, physical shops.
We have selected Vendure as the headless server for the development of a multi-shop e-commerce platform for a large Belgian food retail distribution chain. For this chain we have been able to deliver a fully customized front-end shop, with the power of Vendure as backend platform.
For the typical single-shop e-commerce activities we mostly use Shopify. However, for this retail chain with a large number of local shops, we have chosen Vendure for three reasons:
- We also managed to share a common set of products across the different shops, while allowing each shop to extend the selection with their own products.
- The very future proof software stack.
- The close interaction and engagement we could possibly set up with the core team of Vendure.
We started with a basic Vendure setup, and integrated Google Cloud Storage for assets. We had to adopt the Elasticsearch plugin as we needed to extend the search using the customMappings feature. Elasticsearch is performant but quite heavy, which is a bit a downside for both our development and cloud setup.
We containerized both the storefront and API, in order to run it in a Kubernetes cloud environment, adding an importer which uses Google Cloud Pub Sub to queue incoming requests for inserts/updates of products, collections and promotions.
We created a B2B gateway which is used by the IT department of the customer to fetch and update other data using a queue. The gateway gives us more control of which queries and fields of the Vendure API are accessible and transforms it to their needs.
We’ve chosen Angular as the framework for developing the storefront, as this is our main expertise building custom web based platforms. We combined this with Apollo Client for the GraphQL interaction.
We needed a lot of customization. Custom fields are a time saver for simple extensions, and the plugin system can handle quite complex extensions. For the most complex cases, contributions to the Vendure repository were needed. The adoption and support from the maintainers on this level gives a trustworthy feeling towards the project for us.