|

Products

The current catalog, variant, option, price, image, category, collection, and inventory relationships.

A Product is the catalog aggregate in Openfront Ecommerce. It has title, description, handle, subtitle, gift-card/discount flags, thumbnail, status and metadata plus relationships to variants, options, images, categories, collections, tags, type, shipping profile, tax and discount records.

Variants and options

ProductVariant is the sellable unit. Variants have titles and SKUs and connect to option values and money amounts. ProductOption and ProductOptionValue describe choices such as size or color without flattening them into arbitrary product JSON.

Prices

Pricing is relational. Money amounts connect sellable variants to price sets and regional/currency context. Price lists and rules provide additional pricing policy. Store accepted price and total facts on order lines so a later catalog change does not rewrite an order.

Images and organization

  • ProductImage stores image URL and alt text.
  • categories can form a hierarchy.
  • collections group products for merchandising.
  • tags and product types add classification.
  • shipping profiles and tax relationships affect fulfillment and checkout policy.

Inventory

Inventory uses locations and stock movements rather than one marketing-page number. The exact available quantity depends on the variant, location, movements, reservations/fulfillment behavior and the operation reading it.

Current source does not justify blanket claims for CSV import/export, forecasting, automatic low-stock alerts, video galleries or every kind of digital/subscription/bundle product. Document those only when the corresponding model, workflow and test exist in your fork.

Operator path

The dashboard has product list, create and detail routes plus category, collection and inventory pages. Use those feature screens for ordinary work and domain operations for price/inventory changes that need validation or audit. Generic list CRUD should not bypass order snapshots, tenant access or inventory accounting.

API example

The GraphQL API page shows a query using the current generated field names. Always check schema.graphql from the same source revision as the deployment.

On this page