🚨 Announcement: A New Chapter for Vendure read more

header image

Case study


A multi-tenant platform for small web shops

Built by Pinelab.studio

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 Pinelab.studio.