Skip to main content
Vendure Core

The open-source commerce framework your team can read, extend, and own

One coherent commerce backend in a public repo, built on TypeScript, NestJS, and GraphQL. Extend it in code your engineers already know.

~/projects/my-shop
my-plugin.ts
vendure-config.ts
import { VendurePlugin } from '@vendure/core';
import { LoyaltyService } from './loyalty.service';
 
@VendurePlugin({
imports: [EventBusModule],
providers: [LoyaltyService],
configuration: config => {
config.customFields.Customer.push({ name: 'points', type: 'int' });
return config;
},
})
export class LoyaltyPlugin {
static init(options: PluginOptions) {
// Wire up your loyalty rules here
return LoyaltyPlugin;
}
}
zsh — my-shop
01 · Unified core
Patchwork services resolving into a unified Vendure coreAPIAPIAPIAPIAPIAPIAPIAPIAPIAPIAPICatalogPricingOrdersCustomersSearchInventory

A commerce framework, not a pile of primitives

Catalog, pricing, orders, channels, and the plugin system are already wired together in one NestJS application. You don't assemble Vendure Core from packages. You clone it, run it, and start extending where your business logic lives.

Add your business logic to a backend that is already shaped like commerce.

Public and proven

Built in public, used in production

8,100+ stars

Developers and engineering teams evaluating, prototyping, and running Vendure.

View on GitHub

270+ contributors

From one-line fixes to entire subsystems.

50K+ monthly downloads

@vendure/core pulled from npm every month.

GPLv3 licence

Free to use, fork, and self-host under GPLv3. A commercial licence is available on Vendure Platform for teams that need IP indemnification.

Read about the licence
What Core gives you

An ecommerce framework with the primitives already wired

What you get on day one, and what stays true at day 1,000. No magic, no closed runtime, no hidden services.

Read it, extend it, own it

The core is TypeScript, top to bottom, in a public repo under GPLv3. No proprietary DSL, no closed runtime. Clone it, read the source, and ship the same code your team is responsible for.

A stack your team already knows

TypeScript, NestJS, GraphQL, on Postgres, MySQL, or MariaDB. Your existing engineers will recognise the architecture on day one, and the hiring pool already exists.

One coherent backend

Catalog, pricing, orders, customers, channels, the admin API, and the plugin system all live in one core. Not seven services to integrate, monitor, and keep in sync. One repo, one data model, one set of APIs.

Replace the parts you need to, not the whole core

Strategy patterns, plugin API, GraphQL schema extensions, lifecycle events. Replace default behaviour safely, in TypeScript, with full type safety. Your customisations live next to the core, not inside a fork you have to rebase forever.

Self-host on your terms

Your infrastructure, your region, your data. Deploy on AWS, Azure, GCP, on-prem, Kubernetes, Docker, or a single VM, including air-gapped environments.

No new language. No bespoke runtime. No retraining.

Vendure Core runs on TypeScript, NestJS, GraphQL, and the SQL database you already operate. These are patterns your engineers already ship in production. No new language, no proprietary runtime.

your repo · custom plugin
TypeScript
import { PluginCommonModule, VendurePlugin } from '@vendure/core'
import { PricingService } from './pricing.service'
import { shopApiExtensions } from './api/api-extensions'

@VendurePlugin({
  imports: [PluginCommonModule],
  providers: [PricingService],
  shopApiExtensions: {
    schema: shopApiExtensions,
    resolvers: [PricingService],
  },
})
export class CustomPricingPlugin {}

Plug into the core, don't carve it up

Vendure Core exposes the extension points a real business needs: plugins for new features, strategy patterns for replacing default behaviour, and GraphQL schema extensions for new APIs.

Write a plugin as a NestJS module with a Vendure decorator, then register it in vendure-config.ts. Both files are plain TypeScript in your own repo.

Upgrade Core when a new version ships, and your business logic upgrades with it. Your customisations don't live inside a fork you have to keep rebasing.

Trusted by complex B2B commerce and enterprise retail.

Why teams pick Vendure

What engineering leads say about Core

Three engineering leads on the same question: why Vendure Core and not the alternatives.

What convinced me about Vendure is its fundamentally well-architected codebase. It's clear, intuitive, and easy to extend, making it adaptable to virtually any use case.

Daniel Biegler from Chimpify GmbH
Daniel Biegler
CTO, Chimpify GmbH

Vendure is a breath of fresh air. Built with developers in mind, easy to extend, and well-documented. It embraces the need for customization and enabled me to deliver on time, within budget. The community support is fast and incredibly helpful.

Ludwig Göbkes from eCube
Ludwig Göbkes
Senior Software Developer, eCube

Our peer-to-peer sharing marketplace builds on proven e-commerce components, but only Vendure offered the flexibility to seamlessly integrate our complex business logic. Its modern tech stack and use of established frameworks enable us to work efficiently and build a maintainable long-term solution.

Kevin Mattutat from Fainin GmbH
Kevin Mattutat
CTO, Fainin GmbH
FAQ

What teams ask before they ship on Core

Common questions from engineering and procurement teams evaluating Vendure Core for a real workload.

Ready when you are

Clone the repo, ship the prototype

Run it locally in minutes, ship the same code that runs in production, and decide for yourself.