Vendure — Open Source Headless E-Commerce Framework
Vendure is a headless commerce framework built with TypeScript, NestJS, and GraphQL. Extensible plugin system, multi-channel support, and full API-first architecture.
What it is
Vendure is an open-source headless commerce framework built with TypeScript, NestJS, and GraphQL. It provides the full backend for e-commerce: products, orders, payments, fulfillment, shipping, and tax, exposed through a GraphQL API so any frontend can consume it.
Vendure targets developers and teams building custom storefronts with React, Next.js, Vue, or any frontend framework who need a flexible commerce engine without vendor lock-in.
How it saves time or tokens
Vendure removes the need to build commerce primitives from scratch. Its plugin system means you add payment gateways (Stripe, PayPal, Mollie), search (Elasticsearch), and custom business logic without modifying core code. The Admin UI ships ready-made, so back-office operations work on day one. Multi-channel support lets you run web, mobile, and POS from a single backend instance.
How to use
- Scaffold a new project with the CLI:
npx @vendure/create my-shop
cd my-shop
npm run dev
- Open the admin panel at
http://localhost:3000/adminand log in withsuperadmin/superadmin.
- Configure products, shipping methods, and payment integrations through the admin UI or programmatically via the GraphQL API.
Example
Querying products from the storefront GraphQL API:
query {
products(options: { take: 10 }) {
items {
id
name
slug
variants {
price
currencyCode
stockLevel
}
featuredAsset {
preview
}
}
}
}
Creating a custom plugin:
import { VendurePlugin, PluginCommonModule } from '@vendure/core';
@VendurePlugin({
imports: [PluginCommonModule],
providers: [],
configuration: config => {
// modify server config here
return config;
},
})
export class MyCustomPlugin {}
Related on TokRepo
- API development tools — tools for building and testing API-first backends
- Coding tools for developers — broader developer tooling category
Common pitfalls
- Running
npx @vendure/createwithout Node 18+ causes silent failures in dependency resolution - Vendure uses TypeORM under the hood; complex queries may need raw SQL or custom resolvers instead of relying solely on the built-in list queries
- The default SQLite database is for development only; production deployments should use PostgreSQL or MySQL for data integrity and performance
Frequently Asked Questions
Vendure uses TypeORM and officially supports PostgreSQL, MySQL, MariaDB, and SQLite. PostgreSQL is the recommended choice for production. SQLite ships as the default for quick local development but should not be used in production.
Yes. Vendure is headless and exposes a GraphQL API. Any frontend framework can consume it. The Vendure docs include starter projects for Next.js, Remix, and Angular. Vue/Nuxt integrations work through standard GraphQL clients like Apollo or urql.
Plugins are NestJS modules decorated with @VendurePlugin. They can extend the GraphQL schema, add custom entities, register event handlers, and modify server configuration. Vendure ships official plugins for Elasticsearch, Stellate, and various payment providers.
Vendure supports multi-channel out of the box, which lets you run separate storefronts from one backend. For true multi-vendor marketplaces with independent seller accounts, you would need custom plugin development on top of the channel system.
Vendure uses a PaymentMethod abstraction with handler functions. Official integrations exist for Stripe, PayPal, Mollie, and Braintree. You implement a PaymentMethodHandler interface to add any custom gateway, handling creation, settlement, and refund lifecycle hooks.
Citations (3)
- Vendure GitHub— Vendure is built with TypeScript, NestJS, and GraphQL
- Vendure Docs— Vendure plugin architecture based on NestJS modules
- Vendure Docs— GraphQL API for storefront and admin operations
Related on TokRepo
Source & Thanks
- GitHub: vendure-ecommerce/vendure — 8K+ ⭐
- Website: vendure.io
Discussion
Related Assets
Conda — Cross-Platform Package and Environment Manager
Install, update, and manage packages and isolated environments for Python, R, C/C++, and hundreds of other languages from a single tool.
Sphinx — Python Documentation Generator
Generate professional documentation from reStructuredText and Markdown with cross-references, API autodoc, and multiple output formats.
Neutralinojs — Lightweight Cross-Platform Desktop Apps
Build desktop applications with HTML, CSS, and JavaScript using a tiny native runtime instead of bundling Chromium.