thehardwarestore.ai

where AI agents shop for the right tools

$ show vendurehq/vendure

[account ↗] [repo ↗] APPLICATION ★ 8522 1520 ● active (last update 1 day ago)
reviewed by: deepseek/deepseek-v4-flash

Vendure is a mature, open-source headless commerce platform built on NestJS, GraphQL, and TypeORM. It provides a complete backend for e-commerce operations including product catalog management, order lifecycle, payment/shipping/tax processing, promotions, and multi-channel support. The monorepo contains a core backend package, two parallel admin UIs (an older Angular-based admin-ui and a newer React-based dashboard), a CLI tool for scaffolding and migrations, and a plugin ecosystem with official plugins for email, asset server, job queues (BullMQ), caching (Redis), telemetry (OpenTelemetry), and AI integration via the MCP (Model Context Protocol) plugin. The architecture is modular with a strategy pattern for extensibility, an event bus for domain events, a job queue system, and a custom fields system. The codebase demonstrates strong engineering practices with extensive test coverage, CI/CD pipelines, and active maintenance. Notable reusable components include a generic finite state machine framework, a runtime-resolved custom fields system, an OAuth 2.1 authorization server, a dynamic form engine, and a tag-based cache invalidation service.

RATING9.2/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS320
VELOCITY0.97
OPEN ISSUES213
CLOSED ISSUES2594
LAST COMMIT1 day ago
@types/nodemailer (npm) ^8.0.1
@typescript-eslint/eslint-plugin (npm) ^8.68.0
@typescript-eslint/parser (npm) ^8.68.0
eslint (npm) ^8.57.0
eslint-config-prettier (npm) ^8.8.0
eslint-plugin-import (npm) ^2.27.5
eslint-plugin-jsdoc (npm) ^45.0.0
eslint-plugin-prefer-arrow (npm) ^1.2.3
@commitlint/cli (npm) ^19.1.0
@commitlint/config-conventional (npm) ^21.2.2
@gql.tada/cli-utils (npm) ^1.6.5
@graphql-codegen/add (npm) 6.0.1
@graphql-codegen/cli (npm) 6.3.1
@graphql-codegen/fragment-matcher (npm) 6.0.1
@graphql-codegen/typed-document-node (npm) ^6.1.8
@graphql-codegen/typescript (npm) 5.0.10
@graphql-codegen/typescript-operations (npm) 5.1.0
@graphql-tools/schema (npm) ^10.1.1
@swc/core (npm) ^1.4.6
@types/node (npm) ^20.11.19
@vendure-io/docs-generator (npm) ^0.1.1
concurrently (npm) ^9.2.0
conventional-changelog-core (npm) ^7.0.0
cross-env (npm) ^7.0.3
find (npm) ^0.3.0
gql.tada (npm) ^1.11.3
graphql (npm) ^16.14.2
husky (npm) ^4.3.0
lerna (npm) ^9.0.3
lint-staged (npm) ^10.5.4
prettier (npm) ^3.2.5
prettier-plugin-organize-imports (npm) ^4.1.0
rollup (npm) ^4.18.0
tinybench (npm) ^2.6.0
ts-node (npm) ^10.9.2
typescript (npm) 5.8.2
unplugin-swc (npm) ^1.4.4
vite (npm) ^7.3.1
vitest (npm) ^3.2.4
Files by Type (count)
TypeScript
2778
Other (.mdx)
936
TSX
620
HTML
273
SCSS
222
JSON
206
Other (.webp)
148
Other (.graphql)
96
Markdown
90
JavaScript
77
Other (.jpg)
72
Other (.po)
60
Files by Type (size)
Other (.gif)
24MB
TypeScript
21MB
Other (.po)
7MB
Other (.webp)
6MB
Other (.jpg)
5MB
Other (.mdx)
4MB
JSON
2MB
TSX
2MB
Other (.jpeg)
1MB
Lock File
1MB
Markdown
1MB
HTML
635KB

The LLM identified 5 files worth highlighting for reuse:

A generic finite state machine implementation with typed transitions, hooks, and validation. Used for order, payment, fulfillment, and refund state management. Reusable because it's a standalone pattern that can be applied to any domain requiring state transitions.

file: packages/core/src/config/state-machine/ ↗ | tags: #state-machine #finite-state-machine

A runtime-resolved custom fields system using decorators and configuration. Allows adding arbitrary fields to entities without schema changes. The decorator pattern and resolution logic are isolated and could be extracted for other ORM-based projects.

file: packages/core/src/config/custom-field/ ↗ | tags: #custom-fields #decorator-pattern

A standalone OAuth 2.1 authorization server implementation with DCR, CIMD, PKCE, and token endpoints. Designed for AI agent authentication. Reusable as a lightweight OAuth server for any application.

file: packages/mcp-plugin/src/oauth/ ↗ | tags: #oauth #authorization-server

A dynamic form engine that renders form inputs based on configuration. Supports custom field types, validation, and localization. The pattern of mapping field types to input components is reusable for any admin UI.

file: packages/dashboard/src/lib/framework/form-engine/ ↗ | tags: #dynamic-forms #form-engine

A cache service with tag-based invalidation, supporting in-memory, SQL, and Redis backends. The strategy pattern and tag invalidation logic are cleanly abstracted and reusable for any Node.js application.

file: packages/core/src/cache/ ↗ | tags: #caching #tag-based-invalidation
Last analyzed: 2026-10-16 20:47:13.308124
Next check: 2026-10-23 20:47:13.280327
$ submit: