Vendure is a headless e-commerce framework built on NestJS, TypeORM, and GraphQL. This is a Lerna monorepo (fixed versioning) containing all official packages.
@vendure/core - Main server framework@vendure/common - Shared types/utilities@vendure/testing - E2E test utilities@vendure/admin-ui - Angular admin (legacy)@vendure/dashboard - React admin (new, replacing Angular)@vendure/admin-ui-plugin - Serves admin UI@vendure/ui-devkit - UI extension authoring@vendure/asset-server-plugin - Asset serving + S3@vendure/email-plugin - Email notifications@vendure/elasticsearch-plugin - Search@vendure/job-queue-plugin - BullMQ/Pub-Sub jobs@vendure/payments-plugin - Stripe/Mollie@vendure/graphiql-plugin - GraphQL IDE@vendure/harden-plugin - Security hardening@vendure/sentry-plugin - Error trackingdev-server - Local dev environment (NOT published)e2e-common - Shared E2E configcd packages/<name> && npm run build (or npm run watch for continuous)packages/dev-server/dev-config.ts to test new featurescd packages/dev-server && npm run devcd packages/<name> && npm run e2e <test-file>npm install
npm run build
docker-compose up -d mariadb
cd packages/dev-server
npm run populate
npm run dev
From root:
npm run build # Build all packages
npm run watch:core-common # Watch core + common (most common during dev)
npm run test # Run all unit tests (prefer targeted runs in package dirs)
npm run e2e # Run all E2E tests (prefer targeted runs in package dirs)
npm run lint # ESLint with auto-fix
npm run codegen # Generate GraphQL types
From packages/dev-server:
npm run dev # Start server + worker
npm run populate # Seed database with test data
npm run dashboard:dev # Vite dev for dashboard
# Default: MariaDB
docker-compose up -d mariadb
# PostgreSQL
docker-compose up -d postgres_16
DB=postgres npm run populate
# SQLite (no Docker needed)
DB=sqlite npm run populate
*.spec.ts, run with npm run testpackages/<name>/e2e/ as *.e2e-spec.ts, run with npm run e2e <test-file> from package dirpackages/<name>/e2e/__data__ for speed. Delete to reset after schema changes.Conventional commits enforced by commitlint:
type(scope): message
Types: feat, fix, docs, perf, style, refactor, test, chore
Scopes: core, common, admin-ui, dashboard, email-plugin, etc.
/admin-api) and Shop API (/shop-api)npm run codegenpackages/dev-server/dev-config.ts - Dev server configuration (plugins, DB, etc.)packages/core/src/config/vendure-config.ts - VendureConfig type definitionlerna.json - Monorepo version (currently 3.5.2)docker-compose.yml - Dev infrastructure (DBs, Redis, Elasticsearch, Keycloak)master - Bug fixes (default PR target)minor - New featuresmajor - Breaking changes@vendure/core, you usually need to watch @vendure/common too: npm run watch:core-commonpackages/dev-server/test-plugins/ for example plugin implementationsnpm run dashboard:dev