Overview
Spree is a commerce engine built around interconnected models that represent the core concepts of commerce: products, orders, payments, and shipments. It adapts to your stack — use it as a headless API for any frontend, embed it into an existing application, or scale it from a single storefront to a global multi-vendor marketplace.Spree supports PostgreSQL, MySQL, and SQLite. PostgreSQL is recommended for production. Learn more about database configuration.
Core Commerce Flow
The following diagram shows how the main models interact during a typical customer purchase: How it works:- Catalog — Products have Variants (SKUs) with prices and inventory tracked at Stock Locations
- Shopping — Customers add Variants to their cart, creating an Order with Line Items
- Checkout — The Order collects Addresses, calculates Shipping options, and processes Payments
- Fulfillment — Shipments are created from Stock Locations, tracking individual Inventory Units
- Pricing & Adjustments — Taxes and Promotions create Adjustments that modify order totals
Core Model Relationships
This diagram shows the key database relationships between Spree’s main models:APIs
Spree exposes two REST APIs:
Both APIs share the same list shapes, filtering, querying, and pagination, and offer fully typed TypeScript clients — @spree/sdk for the Store API and @spree/admin-sdk for the Admin API.
Events from both APIs can trigger Webhooks to notify external systems in real time.
Multi-Store Architecture
Spree supports running multiple storefronts from a single installation. Each Store can have:- Its own domain and branding
- Different currencies and locales
- Separate product catalogs
- Independent payment and shipping methods
- Isolated orders and customers
Extension Points
Spree is designed to be customized without modifying core code. The main extension mechanisms are:For most customizations, prefer Events and Dependencies over Decorators. They’re easier to maintain and won’t break during upgrades.
Packages
Spree is distributed as a set of packages: Core (required):
Optional:
TypeScript packages:
Related Documentation
- Products — Product catalog and variants
- Orders — Order lifecycle and state machine
- Payments — Payment processing
- Shipments — Shipping and fulfillment
- Customization Quickstart — How to extend Spree

