// the find
vendurehq/vendure
Open source headless commerce framework built with TypeScript, NestJS, React and GraphQL
Vendure is a headless e-commerce backend built on NestJS with a GraphQL API, TypeScript throughout, and a plugin system that lets you extend behavior without forking the core. It covers the full commerce domain — catalog, orders, promotions, tax, shipping, payments, stock — out of the box. Aimed at teams that need more control than Shopify but don't want to stitch together five separate services.
Plugin architecture is genuinely well-designed: you get stable extension points via decorators and DI rather than monkey-patching or forking. The type safety story is strong — GraphQL schema, service layer, and DB entities all share TypeScript types end to end, which kills a whole class of integration bugs. The admin dashboard is a first-class React app that plugins can extend with their own pages and components, not an afterthought. The testing harness (@vendure/testing) ships a programmable mock server so you can write e2e plugin tests without a real storefront.
GPLv3 license is a dealbreaker for many commercial products — you need the paid Vendure Cloud or a commercial license, and that cost isn't front-and-center until you're already deep in. The NestJS foundation is a double-edged sword: heavy DI, lots of decorators, and a steep learning curve if your team hasn't used NestJS before — plan for onboarding time. Default search is SQL-based full-text; anything production-grade requires adding Elasticsearch or a custom plugin, which is real work. The monorepo is large and the build tooling (Bun + Lerna + a custom CLI) adds friction when debugging dependency issues locally.