Product Phase A Built
The Product module is the merchant's catalog. Owners and managers define what they sell — products, the sellable variants beneath each product, the prices (fares) those variants carry, the categories that group them, and the codes (SKU, barcode, QR) used to find them. Everything sold through POS, online, or any channel starts here.
1. Identity
| Property | Value |
|---|---|
| Module ID | CORE-05 |
| Tier | Core |
| Status | Built |
| Phase | P1 (catalog) · P2 (variants + fares) · P3 (advanced types + promotions) |
| Priority | HIGH |
| Primary users | Owner / Manager (catalog setup) · Cashier / Employee (lookup at POS) |
2. Purpose & Scope
| Included | Excluded |
|---|---|
| Products, categories, and product images | Bill of Materials / recipe management → Inventory |
| Variants (the sellable units) + variant types | Stock levels per location → Inventory |
| Pricing via fares (base, tiered, time/quantity/channel) | Order processing & checkout → Orders |
| Product & variant identifiers (SYSTEM, SLUG, SKU, BARCODE, QRCODE) | Tax rates & e-invoice → Tax & Invoice |
| Sale-channel availability | CSV / bulk import (Planned) |
| Bundles (combo, add-on, frequently-bought-together) | Promotion discount calculation (In-progress) |
3. Capabilities
| Capability | What the user can do | Status |
|---|---|---|
| Product catalogue | Create, update, deactivate, archive, and reactivate products | Built |
| Multilingual info | Name & description per product / variant in multiple languages | Built |
| Categories | Group products; flag a category as add-on | Built |
| Product images | Attach media to products and variants | Built |
| Default variant | Every product gets one variant automatically on creation | Built |
| Identifiers | Look up by SYSTEM, SLUG, SKU, BARCODE, QRCODE | Built |
| Variants | Add multiple sellable variants per product (atomically with info, fares, IDs) | Built |
| Variant types | STORABLE, CONSUMABLE, SERVICE, KIT, COMBO, MANUFACTURED | Built |
| Units of measure | Base / purchase / sale unit stored per variant | Built |
| Sale-channel availability | Control which products appear in which channels | Built |
| Fares (pricing) | One fare set per variant; tiered prices by quantity, time, channel | Built |
| Bundles | Combo, add-on, and frequently-bought-together relationships | Built |
| Effective date range | Variants available only inside a validity window | Built |
| Variant pricing read endpoint | Retrieve a variant's resolved price in isolation | Planned |
| Promotions | Discount campaigns (create/manage) | In-progress |
| Unit conversions | Buy in one unit, sell in another | Planned |
| CSV / bulk import | Upload a catalogue from a spreadsheet | Planned |
Promotions can be created and managed today, but the discount calculation engine is disabled — discounts are not yet applied automatically at pricing time. See developer Promotions doc.
4. Module Dependencies
| Depends on | Why |
|---|---|
| Commerce | Products and categories are scoped to a merchant |
| Inventory | Stockable variants seed inventory items; BOM lives here |
| Orders | Variants are what gets sold in an order |
| Tax & Invoice | Tax groups are applied to products |
5. Backend Packages
Implementation detail lives in the developer docs — this section only maps the module to the services that power it.
| Package | Role | Developer docs |
|---|---|---|
@nx/commerce | Products, variants, categories, identifiers, bundles, sale channels | commerce |
@nx/pricing | Fare sets, fares, rules, fare selection, promotions | pricing |
@nx/core | Shared schemas for all catalog entities | core |
6. Key User Flows
Product creation (aggregate)
Fare resolution (at sale)
7. Roles & Permissions
| Role | Can | Cannot |
|---|---|---|
| Owner | Full catalogue management within own merchants | See products of other organizations |
| Manager / Employee | View and look up products in assigned merchants | See merchants they are not assigned to |
| Admin / Super Admin | View across all organizations (role filtering bypassed) | — |
8. Status & Roadmap
| Phase | Capabilities |
|---|---|
| P1 | Product CRUD, categories, images, default variant, base fare, SYSTEM/SLUG identifiers |
| P2 | Multiple variants (aggregate), multi-scheme identifiers, tiered fares (date/quantity), sale-channel availability, bundles |
| P3 | Advanced variant types (KIT/COMBO/MANUFACTURED with BOM), UOM, promotion discount engine, CSV import |
Variant types and UOM storage are already built; the BOM consumption, unit-conversion, and promotion-discount behaviors that complete P3 are still pending — see the Capabilities table.