Files
mozimo.in/docs/adr/0002-one-variant-per-product.md
T
tanshu de0553d0d4 Wayfinder: chart the Shopify headless commerce map
The route from "mozimo.in displays Shopify products" to "mozimo.in sells them",
as a plan with a phase spine and gates, plus the open decision tickets that
still shape it and the evidence they rest on.

- .scratch/shopify-headless-commerce/: plan.md (phases and gates), map.md (the
  wayfinder map), 10 open decision tickets
- CONTEXT.md: Storefront / Theme store / Cart / Parity vocabulary
- docs/adr/0001-0003: Checkout stays Shopify-hosted, one Variant per product,
  the checkout domain stays shop.mozimo.in
- docs/research/ and docs/shopify-catalog-inventory.md: verified store facts,
  the Cart API probe, and the catalogue inventory

Raw Shopify doc scrapes under .scratch/shopify-research/ are ignored: they are
working material, not record.
2026-10-14 09:00:42 +05:30

12 lines
1.1 KiB
Markdown

# One Variant per product; sizes are separate products
Every product in the Shopify catalog has exactly one Variant, with a single option named `Title`. Size and weight families are modelled as separate products with their own handles rather than as variants — Carnival Celebration S/M/L and Celestial S/L are five products, not two products with options.
We are keeping that model rather than re-modelling the catalogue. It is verified across all 61 products, and it materially simplifies the Cart work: there is no variant selector to design and no product needs an option-picking UI.
## Consequences
- The Cart still needs each product's Variant GID as its merchandise ID, because that is what the Cart API takes. The current `ShopProduct` carries none.
- A future engineer will assume a headless cart requires variant selectors. It does not here. Re-modelling sizes into variants later would be a catalogue migration across both storefronts, not a UI change.
- Weight is carried in the Variant title (`60gm`, `200gm`) rather than in structured options, so any code needing weight must read it from there.