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.
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.
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.
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.
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.
Built in public, used in production
8,100+ stars
Developers and engineering teams evaluating, prototyping, and running Vendure.
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.
Teams building complex commerce with 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.

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.

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.
Vendure Cloud
The managed runtime for either Vendure Core or Vendure Platform. Cloud changes who operates the environment, not the application architecture.
What engineering teams ask before they ship on Core
Common questions from developers and engineering leads evaluating Vendure Core for a real workload.
