trackmcp
Back to directory

High-Performance Headless Node.js ESM E-Commerce Framework

201 stars TypeScriptOthers Updated Sep 3, 2026
e-commercegraphqlmarketplaceheadlessdockershopping-cartnode-jsopen-sourcedigital-commercecartjavascriptshopmongodbheadless-commerce

Documentation

Unchained Engine

Deploy on Railway

Licensed under the EUPL 1.2

Static Badge
Discord
Bundle Size
CLA assistant

Unchained Engine is a modular, API-first e-commerce platform built as a monorepo with npm workspaces. It provides a complete solution for building custom e-commerce applications with GraphQL APIs, extensible plugin architecture, and support for modern use cases like subscriptions, quotations, and tokenized products.

**View Documentation**

Quickstart

Prerequisites

  • Node.js >=22 (see .nvmrc)
  • MongoDB 4.4+ (or use MongoDB Memory Server for development)

Create a New Project

bash
npm init @unchainedshop

Then navigate to http://localhost:4010/ to open the Admin UI and set up your administrator account on first run.

Run Local AI for Copilot

A minimum of 24GB VRAM is needed for this.

bash
llama-server -hf ggml-org/gpt-oss-20b-GGUF --ctx-size 0 --jinja -ub 2048 -b 2048

Package Architecture

Unchained Engine is organized in a hierarchical structure:

code
platform     → Highest level orchestration, combines all packages
    ↓
api          → GraphQL API layer with Express/Fastify adapters
    ↓
core         → Business logic coordination, integrates all core-* modules
    ↓
core-*       → Domain-specific modules (users, products, orders, etc.)
    ↓
infrastructure → Base utilities (mongodb, events, logger, utils, roles)

Packages

Platform & API

PackageDescription
@unchainedshop/platformComplete engine bundle - main entry point combining api, core, plugins, and infrastructure
@unchainedshop/apiGraphQL API with Express/Fastify adapters and MCP server for AI integrations
@unchainedshop/coreCore orchestration with business services, directors, and bulk import

Core Domain Modules

Business logic modules for e-commerce functionality:

PackageDescription
@unchainedshop/core-productsProduct management with pricing, media, reviews, and variations
@unchainedshop/core-ordersOrder lifecycle including positions, payments, deliveries, and discounts
@unchainedshop/core-usersUser accounts, authentication, profiles, and WebAuthn support
@unchainedshop/core-paymentPayment provider management and credentials
@unchainedshop/core-deliveryDelivery provider management and shipping methods
@unchainedshop/core-assortmentsCategory management with hierarchical structures
@unchainedshop/core-filtersProduct filtering and faceted search
@unchainedshop/core-warehousingInventory, stock management, and token surrogates
@unchainedshop/core-enrollmentsSubscription/enrollment management
@unchainedshop/core-quotationsQuote requests and proposal workflows
@unchainedshop/core-bookmarksUser bookmark/wishlist functionality
@unchainedshop/core-filesFile metadata storage and URL management
@unchainedshop/core-eventsEvent history persistence and analytics
@unchainedshop/core-workerBackground job queue and processing
@unchainedshop/core-countriesCountry management with ISO codes
@unchainedshop/core-currenciesCurrency management and blockchain support
@unchainedshop/core-languagesLanguage management for i18n

Infrastructure

Foundational utilities used across all layers:

PackageDescription
@unchainedshop/mongodbMongoDB database abstraction with utilities and DocumentDB compatibility
@unchainedshop/eventsEvent emitter abstraction with pluggable adapters (Redis, Kafka, etc.)
@unchainedshop/loggerHigh-performance logging with JSON/human-readable formats
@unchainedshop/utilsCommon utilities, locale helpers, and Director/Adapter base classes
@unchainedshop/rolesRole-based access control (RBAC) system
@unchainedshop/file-uploadFile upload abstraction with pluggable storage backends

Extensions

PackageDescription
@unchainedshop/pluginsOfficial plugin collection for payment, delivery, pricing, and more
@unchainedshop/ticketingEvent ticketing with PDF generation and Apple/Google Wallet passes

Admin UI

PackageDescription
admin-uiNext.js admin interface for managing the e-commerce platform

Examples

ExampleDescription
Kitchensink (Fastify)Full-featured example with Fastify, all plugins, ticketing, and AI integration
Kitchensink (Express)Full-featured example with Express, MCP server, and AI integration
TicketingEvent ticketing with PDF and wallet passes
MinimalMinimal setup example
OIDCOpenID Connect authentication example

Plugin Architecture

Unchained uses a Director/Adapter pattern for extensibility. Directors manage collections of adapters that implement specific behaviors.

Available Directors

DirectorPurposeExample Adapters
`PaymentDirector`Payment processingStripe, PayPal, Invoice
`DeliveryDirector`Shipping/deliveryPost, Pickup, Digital
`WarehousingDirector`Inventory managementStore, ETH Minter
`WorkerDirector`Background jobsEmail, SMS, HTTP Request
`FilterDirector`Product searchStrict Equal, Local Search
`ProductPricingDirector`Product pricingCatalog Price, Discounts
`OrderPricingDirector`Order totalsItems, Delivery, Payment
`MessagingDirector`NotificationsEmail templates, SMS

See the Core README for detailed documentation on creating custom adapters.

Available Plugins

The @unchainedshop/plugins package includes:

Payment

  • Stripe, Datatrans, Saferpay, PostFinance Checkout
  • Payrexx, Cryptopay, Apple IAP
  • Invoice (standard and prepaid)

Delivery

  • Post (manual shipping), Store pickup, Message-based delivery

Pricing

  • Product catalog pricing, Currency conversion, Tax calculation (Swiss, EU, UK, US)
  • Order-level and product-level discounts

File Storage

  • MongoDB GridFS, MinIO/S3-compatible storage

Workers

  • Email (Nodemailer), SMS (Twilio, Bulkgate), Push notifications
  • Currency rate updates (ECB, Coinbase), Bulk import

Events

  • Node.js EventEmitter, Redis pub/sub, AWS EventBridge

Development

Commands

bash
npm install          # Install all dependencies
npm run dev          # Start development with hot-reload
npm run build        # Build all packages
npm test             # Run all tests
npm run lint         # Lint and fix code

Testing

bash
npm run test:run:unit         # Run unit tests only
npm run test:run:integration  # Run integration tests
node --test path/to/test.ts   # Run a single test file

Project Structure

code
unchained/
├── packages/           # All npm packages
│   ├── platform/       # Main entry point
│   ├── api/            # GraphQL API
│   ├── core/           # Business logic orchestration
│   ├── core-*/         # Domain modules
│   ├── plugins/        # Official plugins
│   ├── ticketing/      # Ticketing extension
│   └── ...             # Infrastructure packages
├── examples/           # Example implementations
│   ├── kitchensink/    # Full-featured example
│   ├── minimal/        # Minimal setup
│   └── ...
└── tests/              # Integration tests

Migration Guide

See MIGRATION.md for upgrade instructions between major versions.

Claude Code Integration

Unchained provides a Claude Code skill to help with upgrades:

bash
claude "skill install https://docs.unchained.shop/skills/upgrade-unchained/SKILL.md"

This skill guides Claude through fetching the correct migration guide, changelog, and examples for your target version.

Security & Compliance

Unchained Engine is designed for deployment in security-sensitive environments including banking, government, and enterprise contexts.

Compliance

StandardStatusNotes
PCI DSS SAQ-AEligiblePayment tokenization, no card data storage
ISO 27001AlignedComprehensive security controls
FIPS 140-3SupportedDeploy with FIPS-enabled Node.js
FINMA/NIS2AlignedBanking and EU requirements

Cryptographic Standards

  • Password Hashing: PBKDF2-SHA512 with 300,000 iterations
  • Token Security: SHA-256 hashing, cryptographically random generation
  • Session Encryption: AES-256-GCM (optional)
  • Payment Signatures: HMAC-SHA-256/512

FIPS 140-3 Mode

For US federal government and regulated environments, run Unchained with FIPS-validated cryptography:

dockerfile
# Use Chainguard FIPS image
FROM cgr.dev/chainguard/node-fips:latest
WORKDIR /app
COPY . .
CMD ["node", "index.js"]

Or enable FIPS mode manually:

bash
node --enable-fips your-app.js

API Hardening (Denial-of-Service Protection)

The GraphQL API does not impose query-complexity, depth, alias-count, or rate limits by default. Unchained is a headless engine embedded in your own server process, so where and how these edge protections are enforced is a deployment decision that belongs to the integrator — appropriate thresholds depend on your schema extensions, traffic profile, and infrastructure (CDN, WAF, API gateway, reverse proxy).

Anonymous access is enabled by default for read-only storefront queries (e.g. `assortments`, `products`, `filters`, `languages`, `currencies`, `countries`, `search`). Because GraphQL lets a single request batch many aliased fields, an unbounded query can fan out into many database operations. Bounding this is the operator's responsibility.

Recommended layers:

1. Query validation (in-process). GraphQL Yoga plugins and validation rules are forwarded straight through `startPlatform` / `startAPIServer` to the underlying Yoga server. For example, using GraphQL Armor:

ts
import { startPlatform } from '@unchainedshop/platform';
   import { maxAliasesPlugin } from '@escape.tech/graphql-armor-max-aliases';
   import { maxDepthPlugin } from '@escape.tech/graphql-armor-max-depth';
   import { maxTokensPlugin } from '@escape.tech/graphql-armor-max-tokens';

   await startPlatform({
     // ...your options
     plugins: [
       maxAliasesPlugin({ n: 15 }),
       maxDepthPlugin({ n: 10 }),
       maxTokensPlugin({ n: 1000 }),
     ],
   });

2. Rate limiting & request-size limits (at the edge). Enforce per-IP / per-token rate limits and body-size caps at your reverse proxy, API gateway, or WAF (e.g. nginx `limit_req`, Cloudflare, AWS WAF). Keep anonymous traffic on a tighter budget than authenticated traffic.

3. Pagination caps. If you expose custom list resolvers, clamp `limit` / pagination server-side.

See SECURITY.md for complete security documentation, compliance details, and deployment recommendations.

Resources

Contributing

Please see our Contribution Guidelines.

Code of Conduct

See our Contributor Covenant Code of Conduct.

License

EUPL-1.2

Frequently asked questions

What is unchained?

unchained is High-Performance Headless Node.js ESM E-Commerce Framework

How do I install unchained?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is unchained open source?

Yes — it is hosted on GitHub at https://github.com/unchainedshop/unchained and has 201 stars.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP