vendurehq/vendure

Open source headless commerce framework built with TypeScript, NestJS, React and GraphQL

8,017 stars TypeScript 12 components

Open source headless commerce framework with TypeScript, NestJS, Angular admin UI

Multi-directional data flow where the core framework provides GraphQL APIs consumed by admin UIs, while plugins extend functionality through event handlers and services that interact with the core database and caching layers.

Under the hood, the system uses 3 feedback loops, 4 data pools, 5 control points to manage its runtime behavior.

Structural Verdict

A 12-component fullstack with 0 connections. 2733 files analyzed. Minimal connections — components operate mostly in isolation.

How Data Flows Through the System

Multi-directional data flow where the core framework provides GraphQL APIs consumed by admin UIs, while plugins extend functionality through event handlers and services that interact with the core database and caching layers.

  1. Request Processing — GraphQL requests processed by NestJS core framework with authentication and validation
  2. Business Logic — Core services handle commerce operations like order management, product catalog, and customer data
  3. Plugin Extensions — Plugins like email, assets, and jobs extend core functionality through event handlers
  4. Data Persistence — Entity changes persisted to database through TypeORM with migration support
  5. UI Rendering — Admin interfaces (Angular/React) consume GraphQL APIs to render management dashboards
  6. Background Processing — Job queue system handles async tasks like email sending and order fulfillment

System Behavior

How the system actually operates at runtime — where data accumulates, what loops, what waits, and what controls what.

Data Pools

Metrics Cache (cache)
Cached commerce metrics calculations with SHA-1 hashed keys
Commerce Database (database)
Main database storing orders, products, customers, and all business entities
Job Queue (queue)
Background job processing queue for async tasks
Asset Storage (file-store)
File storage system for product images and documents with S3 support

Feedback Loops

Delays & Async Processing

Control Points

Package Structure

This monorepo contains 16 packages:

core (app)
Main backend commerce framework with NestJS, GraphQL API, and database entities. Contains all core business logic for orders, products, customers, and payments.
admin-ui (app)
Angular-based admin dashboard for managing the commerce platform. Provides UI for product management, order processing, and system configuration.
dashboard (app)
Modern React-based dashboard replacement for the Angular admin-ui, using Storybook for component development and documentation.
cli (tooling)
Command-line interface for scaffolding, code generation, and project management tasks using Commander.js.
create (tooling)
Project scaffolding tool for creating new Vendure applications with various database and configuration options.
dev-server (tooling)
Development server for testing Vendure during development, includes test plugins and bootstrap configuration.
common (shared)
Shared utilities, types, and GraphQL type definitions used across all packages in the monorepo.
testing (library)
Testing utilities and helpers for writing e2e and integration tests for Vendure applications.
admin-ui-plugin (library)
Plugin that provides metrics and analytics services for the admin interface, including order statistics and caching.
asset-server-plugin (library)
Handles asset storage, image transformations, and CDN integration with support for S3 and Sharp image processing.
email-plugin (library)
Email system with template generation, event handling, and SMTP/SES integration using Handlebars and MJML.
job-queue-plugin (library)
Background job processing system for handling asynchronous tasks like order fulfillment and email sending.
graphiql-plugin (library)
GraphQL IDE integration plugin for API exploration and testing during development.
harden-plugin (library)
Security hardening plugin that implements various security measures and best practices for production deployments.
telemetry-plugin (library)
Analytics and telemetry collection plugin for monitoring system performance and usage metrics.
ui-devkit (library)
Development toolkit and utilities for building custom admin UI extensions and components.

Technology Stack

NestJS (framework)
Backend framework for dependency injection and GraphQL API
GraphQL (library)
API layer with type-safe schema and auto-generated types
TypeORM (database)
Database ORM for entity management and migrations
Angular (framework)
Legacy admin UI framework with reactive forms
React (framework)
Modern admin dashboard with Storybook component development
Lerna (build)
Monorepo management for independent package versioning
Commander.js (library)
CLI framework for development and scaffolding tools
ts-morph (build)
TypeScript AST manipulation for code generation
Vite (build)
Build tool for React dashboard development
Vitest (testing)
Testing framework for unit and integration tests

Key Components

Configuration

docker-compose.yml (yaml)

graphql.config.yml (yaml)

lerna.json (json)

schema-admin.json (json)

Explore the interactive analysis

See the full architecture map, data flow, and code patterns visualization.

Analyze on CodeSea

Related Fullstack Repositories

Frequently Asked Questions

What is vendure used for?

Open source headless commerce framework with TypeScript, NestJS, Angular admin UI vendurehq/vendure is a 12-component fullstack written in TypeScript. Minimal connections — components operate mostly in isolation. The codebase contains 2733 files.

How is vendure architected?

vendure is organized into 5 architecture layers: Core Framework, Admin Interfaces, Plugin Ecosystem, Developer Tools, and 1 more. Minimal connections — components operate mostly in isolation. This layered structure keeps concerns separated and modules independent.

How does data flow through vendure?

Data moves through 6 stages: Request Processing → Business Logic → Plugin Extensions → Data Persistence → UI Rendering → .... Multi-directional data flow where the core framework provides GraphQL APIs consumed by admin UIs, while plugins extend functionality through event handlers and services that interact with the core database and caching layers. This pipeline design reflects a complex multi-stage processing system.

What technologies does vendure use?

The core stack includes NestJS (Backend framework for dependency injection and GraphQL API), GraphQL (API layer with type-safe schema and auto-generated types), TypeORM (Database ORM for entity management and migrations), Angular (Legacy admin UI framework with reactive forms), React (Modern admin dashboard with Storybook component development), Lerna (Monorepo management for independent package versioning), and 4 more. This broad technology surface reflects a mature project with many integration points.

What system dynamics does vendure have?

vendure exhibits 4 data pools (Metrics Cache, Commerce Database), 3 feedback loops, 5 control points, 4 delays. The feedback loops handle auto-scale and cache-invalidation. These runtime behaviors shape how the system responds to load, failures, and configuration changes.

What design patterns does vendure use?

5 design patterns detected: Plugin Architecture, GraphQL Code Generation, Dual UI Strategy, Monorepo Package Organization, Development Toolchain.

Analyzed on March 31, 2026 by CodeSea. Written by .