New: Headless Commerce with Remix! read more

header image

Case study

A multi-tenant platform for small web shops

Built by

small business Netherlands multi-tenant
Tell us a little about yourself and the project

My name is Martijn and I have been a software developer for about 7 years now. I started as Java developer, but later moved towards Node.js with Typescript. I recently started my own company, Pinelab, where I specialize in helping small businesses with their online presence, mainly focussing on e-commerce.

Most of my clients need a small and easy to work with webshop and almost never need any special features. Instead of re-implementing the same shop over and over again, I decided it is easier to have a single platform for all of these similar webshops. I created an ecommerce SaaS platform where it relatively easy to set up a shop for new clients: the same backend with all its features, and reusable front-end components. So, alot of features, relatively cheap, because they are shared amongst clients.

What factors made you decide to use Vendure?

In my previous job, I worked with Node.js and GraphQL, so this is the preferred stack for me. Obviously, I was also looking for an e-commerce platform that supports multi-channel, to enable the multi-client setup of the platform. Vendure is the only platform meeting the requirements of Node.js, GraphQL and multichannel. I already had experience with TypeOrm, NestJS and Apollo Server, which I saw Vendure was using under the hood, so Vendure was the best pick for me.

What were the challenges you faced?

For the Pinelab shop platform I created, I needed multiple channels and channel-based permissions, to prevent clients from accessing each others' data.

Vendure supports channel-based permissions right out of the box. The only code I had to write was the payment integration, which was very easy with the plugin system.

Besides that, I added other features to Vendure for the Pinelab shop platform:

None of these features required me to touch the Vendure source code; everything could be implemented using the plugin system.

How did you build the storefront applications?

For the storefront I began with Angular, because I was familiar with it (and it felt a bit like using NestJS). Using the Vendure documentation it was very easy to implement the storefront against the GraphQL API.

I soon realized optimizing SEO was a bit of a struggle, so I moved to Gridsome, a Vue static page generator. Everytime a client updates their shop, a rebuild is triggered and all static pages are deployed to Netlify.

I will keep using Vendure for the Pinelab shop platform and also intend to use it for larger projects, because of its customizability. I try to publish every plugin and contribute to the Vendure source whenever there is time, to support this great open source project. Keep track of the progress and plugins on