Catalog, prices, stock, collections and option axes. Core.
products is the catalog: what a tenant sells, or in the field solution audits without selling. It is core because field merchandising needs a catalog it does not sell from.
| Table | Holds |
|---|---|
products | Catalog rows. A variant is a child row pointing at its parent, carrying its option codes. |
product_collections | Hierarchical collections a product belongs to, many to many. |
product_options and their values | The option axes (loft, flex, size) and the values under each. |
product_collection_option_links | Which axes become storefront filters for a collection, and in what order. |
product_prices | One row per product and currency, optionally per supplier and location, in minor units. |
product_inventory | Quantity and status per location. |
A product with options is a parent that declares its axes and children that each select one value per axis. Prices and stock belong to the child. Classification, brand and collection membership stay on the parent. Money is an integer count of the currency's smallest unit; catalog prices are stored net and displayed gross from effective-dated tax rates.
| Route | Surface |
|---|---|
/products | The product grid and form, with variants, prices and stock. |
/products/collections | The collection tree. |
/products/options | Option axes and their values. |
/products/featured | The curated home-page shelf. Needs storefront. |
/products/storefront-filters | Per-collection filter composition. Needs storefront. |
products: the form surface and the settings, columns and filters of each grid the module owns, nine in all.
find, present_products, add, seed, propose_import and commit_import, extract_from_doc, propose_scrape and commit_scrape, manage_collections, download_table. The model produces data and one database function owns the write; a generated or imported row lands as a draft until a person approves it.
products.manage. Reads are open to every signed-in user, and the public tier serves the storefront and anonymous visitors.
Never. Every project links it at provisioning.