Skip to main content
Vendure Core

The open-source framework for developers building custom ecommerce applications

One coherent commerce backend in a public repository, built on TypeScript, NestJS, and GraphQL. Vendure Core is the technical framework underneath Vendure, while Vendure Platform is the complete commercial ecommerce product for businesses.

~/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
Product hero visual showing Vendure Core as the foundation for custom commerce.

Evaluating a complete B2B ecommerce platform rather than a developer framework? Explore Vendure Platform.

Not a toy, not a black box, not a blank framework

Closed SaaS gives you a sandboxed scripting hook and a webhook contract, then stops. A DIY composable stack hands you primitives to assemble and a glue layer you maintain forever.

Vendure sits in between. The commerce fundamentals are already built and wired together, and the extension points are first-class, in the same backend as the core, with the same access to services and data the core itself uses.

One coherent backend, not seven services to keep in sync

Catalog, pricing, orders, customers, channels, the admin API, and the extension model all live 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.

One repo, one data model, one set of APIs. Add your logic to a backend that is already shaped like commerce, instead of standing one up from scratch.

Under the hood: the topology you will actually run

A Vendure deployment runs two Node.js processes from one codebase: the server handles Shop and Admin API requests, while the worker processes background jobs such as email, search indexing, and integration hand-offs. Both share a SQL database and persistent job queue.

Scale servers and workers independently. Plugins run inside the same processes, so extensions use the same topology without adding services.

For details, see the architecture overview, worker and job queue, and deployment topology.

The extension model

What you change, and how

Five primitives cover most of what a real commerce business needs to model and customise. Each one is plain TypeScript, typed end to end, and lives next to the core rather than inside a fork you have to rebase.

Plugins as NestJS modules

A Vendure plugin is a TypeScript class with a decorator on a regular NestJS module. Services, resolvers, entities, event handlers, and scheduled tasks, all in one unit your engineers already know how to write.

Strategy patterns

Replace default behaviour without forking the core. Order codes, tax calculators, shipping eligibility, stock allocation, asset storage, password hashing. Swap the default, keep the upgrade path.

Custom fields

First-class on every core entity: order, customer, product, variant, and the rest. They propagate automatically into the GraphQL schema and the admin dashboard, with auto-rendered forms for each field type.

Custom entities

Model your own tables alongside Vendure's. Entities share the same migration tooling and resolve through the same dependency injection your services use. New entity, new GraphQL types, no separate data layer to maintain.

Events, lifecycle, and jobs

Subscribe to typed commerce events. Hook into the NestJS lifecycle. Schedule background work on Vendure's job queue, processed on a dedicated worker you can scale independently.

Your extension is your API

Every extension builds on the same GraphQL surface the core exposes: one introspectable schema, one codegen pipeline. The Admin API and Shop API are both extensible, both type-safe, and both consumed the same way as the rest of Vendure.

Customisations live next to the core, not inside it

Your customisations are your code, in your repo. The Vendure core is upgraded as a versioned dependency, the way your team upgrades anything else. Type-safety catches breaking changes at compile time, in the code you wrote, not at runtime in production.

No permanent fork to rebase, no upgrade you skip because the cost is too high. Your business logic moves forward with the platform.

A stack your engineers recognise from day one

Node.js, TypeScript end to end, NestJS as the application framework, GraphQL for the storefront and admin APIs, and a SQL database your operations team already runs on PostgreSQL, MySQL, or MariaDB.

These are patterns modern backend teams ship every day. Engineers who've never touched Vendure recognise the shape on day one, and hiring against this stack is hiring on the open market, not a niche skill set behind a paywall.

Ergonomic day-to-day

Even the boring stuff is nice

The day-to-day of working on Vendure isn't wrestling a proprietary runtime. It's predictable patterns, real type safety, and tools that behave like a modern backend stack.

Type safety, end to end

From entity to service to GraphQL to the admin UI. Type errors surface at compile time across your business logic, not at runtime in production. Autocomplete and refactors work the same way they do in the rest of your services.

A CLI that scaffolds the boring parts

vendure dev for local work, plus scaffolding for plugins and entities, codegen, and migration helpers. Real ergonomics, not a handful of npm scripts.

Testing tools that look like your stack

The @vendure/testing package boots a real test server against a throwaway database with seeded data, in the Vitest or Jest patterns your engineers already know. No bespoke commerce test runner to learn first.

Introspectable GraphQL with codegen

Fully introspectable GraphQL for both the storefront and admin. Standard codegen tools produce typed clients in the same shape your team already uses on other services. There's no separate plugin schema to manage.

Migrations that just run

Database migrations generate, review, and apply with the patterns your operations team already runs. No proprietary deployment dance, no platform-specific migration DSL.

Built for the tools your engineers use, including their AI ones

Vendure's codebase is typed end to end, organised by predictable, well-documented patterns, and public on GitHub. Those are the conditions modern AI coding tools need to read and write correct code, the same way a human engineer does.

Teams implement faster with AI on Vendure because the code is open, code-first, and has explicit extension points to target. Your engineers and their assistants work against the same codebase that runs in production, not a black box they have to guess at.

Self-host on your terms

Standard runtime, standard storage, standard ops

Vendure runs on the building blocks your platform team already operates. No proprietary runtime, no exotic dependencies, no sidecar services to keep alive.

A SQL database you already run

PostgreSQL, MySQL, or MariaDB. Use your managed instance, your on-prem cluster, or whatever your standard is. No commerce-specific database, no proprietary storage layer.

Anywhere Node.js runs

A Node.js application on NestJS. Deploy on AWS, Azure, GCP, on-prem, Kubernetes, Docker, or a single VM, including air-gapped environments. Standard Redis-compatible cache, standard S3-compatible object storage.

Scales horizontally

Vendure Core is stateless at the application layer and scales behind any load balancer. Job processing runs as separate worker processes you scale independently. Munch runs more than 10,000 payment transactions a day at peak on Vendure.

Your release pipeline, your schedule

Pin to a version, run the migration in your own staging, and ship through the deployment pipeline your team already uses. No forced upgrade windows.

Self-host as long as it serves you, move to Cloud whenever it doesn't

Self-hosting Vendure isn't a one-way door. The application you run inside your infrastructure is the same one Vendure operates on Vendure Cloud: same code, same data model, same APIs.

Moving to Cloud is a runtime change, not a re-platform. Your custom code, data model, and integrations keep working. You change where Vendure runs, not what it does.

Open source you can defend to security

Security's first reaction to open source is risk. The honest answer turns that around: when the code is inspectable, transparency is the control, not the gap. You can read the source, verify the release, and confirm what you install came from our pipeline.

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 by teams shipping commerce on Vendure.

GPLv3 licence

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

Read about the licence

Teams building complex commerce with Vendure.

Why teams pick Vendure

What engineering leads say about Core

Two 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
Where to go next

Choose the route that matches what you are evaluating

Vendure Platform

The complete commercial ecommerce product for complex B2B, with every Platform capability, the Vendure B2B Storefront, product support, and commercial protection included.

Explore Platform

Vendure Cloud

The managed runtime for either Vendure Core or Vendure Platform. Cloud changes who operates the environment, not the application architecture.

Explore Cloud
FAQ

What engineering teams ask before they ship on Core

Common questions from developers and engineering leads evaluating Vendure Core for a real workload.

Ready when you are
Clone the repo, ship the prototype

Run Vendure locally in minutes on the stack your engineers already want to work with, ship the same code that runs in production, and decide for yourself.