Stories › shop-samples · version 1 ·
tags
#shop

Sample objects for shop: Grindstone Coffee Gear, a made-up shop with 12 products, 6 customers, carts, orders in each status, two warehouses and a return. Each $object Class:key (…) declares one object; the project loads them at start (and when this topic is saved), without setting off any flows.

Catalogue✎ edit

$object Category:grinders (
  id = "grinders",
  name = "Grinders",
)
$object Category:brewers (
  id = "brewers",
  name = "Brewers",
)
$object Category:kettles (
  id = "kettles",
  name = "Kettles",
)
$object Category:accessories (
  id = "accessories",
  name = "Accessories",
)
$object Category:filters (
  id = "filters",
  name = "Filters",
  parent = "accessories",
)
$object Supplier:sup-alpine (
  id = "sup-alpine",
  name = "Alpine Burr Works",
  email = "orders@alpineburr.example",
  leadDays = 14,
)
$object Supplier:sup-coastal (
  id = "sup-coastal",
  name = "Coastal Kettle Co.",
  email = "sales@coastalkettle.example",
  leadDays = 7,
)
$object Supplier:sup-paper (
  id = "sup-paper",
  name = "Paperleaf Filters",
  email = "hello@paperleaf.example",
  leadDays = 5,
)
$object PriceList:regulars (
  id = "regulars",
  name = "Regulars",
  discountPct = 10,
)
$object Product:p-hand (
  id = "p-hand",
  name = "Summit hand grinder",
  description = "Steel burrs, 30 g hopper, fold-away handle.",
  category = "grinders",
  supplier = "sup-alpine",
  price = 129.0,
  variants = [{sku: "HG-BLK", option: "black", price: 129.0}, {sku: "HG-SLV", option: "silver", price: 129.0}],
)
$object Product:p-elec (
  id = "p-elec",
  name = "Ridge electric grinder",
  description = "40 grind settings, quiet motor.",
  category = "grinders",
  supplier = "sup-alpine",
  price = 249.0,
  variants = [{sku: "EG-BLK", option: "black", price: 249.0}],
)
$object Product:p-pour (
  id = "p-pour",
  name = "Cedar pour-over dripper",
  description = "Ceramic, fits 02 filters.",
  category = "brewers",
  supplier = "sup-alpine",
  price = 32.0,
  variants = [{sku: "PO-WHT", option: "white", price: 32.0}, {sku: "PO-TEA", option: "teal", price: 32.0}],
)
$object Product:p-press (
  id = "p-press",
  name = "Harbour French press",
  description = "Double-wall steel, 1 litre.",
  category = "brewers",
  supplier = "sup-coastal",
  price = 58.0,
  variants = [{sku: "FP-1L", option: "1 litre", price: 58.0}, {sku: "FP-05", option: "0.5 litre", price: 58.0}],
)
$object Product:p-aero (
  id = "p-aero",
  name = "Travel press",
  description = "Compact, makes one strong cup.",
  category = "brewers",
  supplier = "sup-coastal",
  price = 44.0,
  variants = [{sku: "TP-STD", option: "standard", price: 44.0}],
)
$object Product:p-gkettle (
  id = "p-gkettle",
  name = "Gooseneck kettle",
  description = "Temperature control, 0.9 litre.",
  category = "kettles",
  supplier = "sup-coastal",
  price = 119.0,
  variants = [{sku: "GK-BLK", option: "black", price: 119.0}, {sku: "GK-CPR", option: "copper", price: 119.0}],
)
$object Product:p-skettle (
  id = "p-skettle",
  name = "Stovetop kettle",
  description = "Simple and sturdy, 1.2 litre.",
  category = "kettles",
  supplier = "sup-coastal",
  price = 49.0,
  variants = [{sku: "SK-STL", option: "steel", price: 49.0}],
)
$object Product:p-scale (
  id = "p-scale",
  name = "Brew scale",
  description = "0.1 g, with a timer.",
  category = "accessories",
  supplier = "sup-alpine",
  price = 39.0,
  variants = [{sku: "SC-BLK", option: "black", price: 39.0}],
)
$object Product:p-filt02 (
  id = "p-filt02",
  name = "Paper filters 02",
  description = "100 bleached filters.",
  category = "filters",
  supplier = "sup-paper",
  price = 8.0,
  variants = [{sku: "FI-02W", option: "white", price: 8.0}],
)
$object Product:p-filtcl (
  id = "p-filtcl",
  name = "Cloth filter",
  description = "Reusable cotton.",
  category = "filters",
  supplier = "sup-paper",
  price = 12.0,
  variants = [{sku: "FI-CL", option: "natural", price: 12.0}],
)
$object Product:p-tamper (
  id = "p-tamper",
  name = "Espresso tamper",
  description = "58 mm, walnut handle.",
  category = "accessories",
  supplier = "sup-alpine",
  price = 35.0,
  variants = [{sku: "TM-58", option: "58 mm", price: 35.0}],
)
$object Product:p-canister (
  id = "p-canister",
  name = "Airtight canister",
  description = "Keeps 500 g of beans fresh.",
  category = "accessories",
  supplier = "sup-coastal",
  price = 27.0,
  variants = [{sku: "CN-500", option: "500 g", price: 27.0}],
)

Customers✎ edit

$object Customer:c-maya (
  id = "c-maya",
  name = "Maya Chen",
  email = "maya@example.com",
  address = {street: "12 Elm St", city: "Ottawa", postalCode: "K1A 0B1", country: "Canada"},
  wishlist = ["p-elec"],
  priceList = "regulars",
)
$object Customer:c-omar (
  id = "c-omar",
  name = "Omar Haddad",
  email = "omar@example.com",
  address = {street: "4 Rue Principale", city: "Gatineau", postalCode: "J8X 1A1", country: "Canada"},
  wishlist = [],
)
$object Customer:c-lena (
  id = "c-lena",
  name = "Lena Fischer",
  email = "lena@example.com",
  address = {street: "88 Bank St", city: "Ottawa", postalCode: "K2P 1X4", country: "Canada"},
  wishlist = ["p-gkettle", "p-scale"],
)
$object Customer:c-raj (
  id = "c-raj",
  name = "Raj Patel",
  email = "raj@example.com",
  address = {street: "301 King St W", city: "Toronto", postalCode: "M5V 1J5", country: "Canada"},
  wishlist = [],
  priceList = "regulars",
)
$object Customer:c-ana (
  id = "c-ana",
  name = "Ana Souza",
  email = "ana@example.com",
  address = {street: "9 Harbour Rd", city: "Halifax", postalCode: "B3H 1A1", country: "Canada"},
  wishlist = ["p-press"],
)
$object Customer:c-tom (
  id = "c-tom",
  name = "Tom Brady-Lee",
  email = "tom@example.com",
  address = {street: "55 Main St", city: "Kingston", postalCode: "K7L 1A1", country: "Canada"},
  wishlist = [],
)
$object Review:r1 (
  id = "r1",
  product = "p-hand",
  customer = "c-maya",
  stars = 5,
  text = "Consistent grind, worth every turn.",
)
$object Review:r2 (
  id = "r2",
  product = "p-press",
  customer = "c-ana",
  stars = 4,
  text = "Stays hot for ages.",
)
$object Review:r3 (
  id = "r3",
  product = "p-pour",
  customer = "c-lena",
  stars = 5,
  text = "Clean cups, looks lovely.",
)

Carts✎ edit

One cart has been open for days: the daily cron will mark it abandoned.

$object Cart:cart-1 (
  id = "cart-1",
  customer = "c-omar",
  status = "open",
  updated = "2026-09-01",
  lines = [{sku: "FP-1L", qty: 1, unitPrice: 58.0}],
)
$object Cart:cart-2 (
  id = "cart-2",
  customer = "c-maya",
  status = "ordered",
  updated = "2026-09-20",
  lines = [{sku: "HG-BLK", qty: 1, unitPrice: 129.0}],
)
$object Cart:cart-3 (
  id = "cart-3",
  customer = "c-tom",
  status = "open",
  updated = "2026-09-25",
  lines = [{sku: "SC-BLK", qty: 1, unitPrice: 39.0}, {sku: "FI-02W", qty: 2, unitPrice: 8.0}],
)

Orders✎ edit

One order in each status.

$object Order:o-1001 (
  id = "o-1001",
  customer = "c-maya",
  status = "delivered",
  placed = "2026-09-02",
  lines = [{sku: "HG-BLK", qty: 1, unitPrice: 129.0}, {sku: "FI-02W", qty: 2, unitPrice: 8.0}],
)
$object Order:o-1002 (
  id = "o-1002",
  customer = "c-lena",
  status = "shipped",
  placed = "2026-09-18",
  lines = [{sku: "GK-BLK", qty: 1, unitPrice: 119.0}],
)
$object Order:o-1003 (
  id = "o-1003",
  customer = "c-raj",
  status = "paid",
  placed = "2026-09-24",
  lines = [{sku: "EG-BLK", qty: 1, unitPrice: 249.0}, {sku: "CN-500", qty: 2, unitPrice: 27.0}],
)
$object Order:o-1004 (
  id = "o-1004",
  customer = "c-ana",
  status = "placed",
  placed = "2026-09-26",
  lines = [{sku: "FP-05", qty: 1, unitPrice: 58.0}],
)
$object Order:o-1005 (
  id = "o-1005",
  customer = "c-tom",
  status = "cancelled",
  placed = "2026-09-10",
  lines = [{sku: "TM-58", qty: 1, unitPrice: 35.0}],
)
$object Payment:pay-1001 (
  id = "pay-1001",
  order = "o-1001",
  amount = 145.0,
  method = "card",
  status = "captured",
)
$object Payment:pay-1002 (
  id = "pay-1002",
  order = "o-1002",
  amount = 119.0,
  method = "card",
  status = "captured",
)
$object Payment:pay-1003 (
  id = "pay-1003",
  order = "o-1003",
  amount = 303.0,
  method = "paypal",
  status = "captured",
)
$object Invoice:INV-o-1001 (
  number = "INV-o-1001",
  order = "o-1001",
  amount = 145.0,
  issued = "2026-09-02",
)
$object Invoice:INV-o-1002 (
  number = "INV-o-1002",
  order = "o-1002",
  amount = 119.0,
  issued = "2026-09-18",
)
$object Invoice:INV-o-1003 (
  number = "INV-o-1003",
  order = "o-1003",
  amount = 303.0,
  issued = "2026-09-24",
)

Fulfilment✎ edit

$object Warehouse:wh-ott (
  id = "wh-ott",
  name = "Ottawa",
  city = "Ottawa",
)
$object Warehouse:wh-hal (
  id = "wh-hal",
  name = "Halifax",
  city = "Halifax",
)
$object StockLevel:st-HG-BLK-ott (
  id = "st-HG-BLK-ott",
  sku = "HG-BLK",
  warehouse = "wh-ott",
  qty = 6,
  reorderAt = 3,
)
$object StockLevel:st-HG-SLV-ott (
  id = "st-HG-SLV-ott",
  sku = "HG-SLV",
  warehouse = "wh-ott",
  qty = 2,
  reorderAt = 2,
)
$object StockLevel:st-EG-BLK-ott (
  id = "st-EG-BLK-ott",
  sku = "EG-BLK",
  warehouse = "wh-ott",
  qty = 4,
  reorderAt = 2,
)
$object StockLevel:st-PO-WHT-ott (
  id = "st-PO-WHT-ott",
  sku = "PO-WHT",
  warehouse = "wh-ott",
  qty = 12,
  reorderAt = 4,
)
$object StockLevel:st-PO-TEA-hal (
  id = "st-PO-TEA-hal",
  sku = "PO-TEA",
  warehouse = "wh-hal",
  qty = 5,
  reorderAt = 3,
)
$object StockLevel:st-FP-1L-hal (
  id = "st-FP-1L-hal",
  sku = "FP-1L",
  warehouse = "wh-hal",
  qty = 7,
  reorderAt = 3,
)
$object StockLevel:st-FP-05-hal (
  id = "st-FP-05-hal",
  sku = "FP-05",
  warehouse = "wh-hal",
  qty = 3,
  reorderAt = 3,
)
$object StockLevel:st-TP-STD-ott (
  id = "st-TP-STD-ott",
  sku = "TP-STD",
  warehouse = "wh-ott",
  qty = 9,
  reorderAt = 3,
)
$object StockLevel:st-GK-BLK-ott (
  id = "st-GK-BLK-ott",
  sku = "GK-BLK",
  warehouse = "wh-ott",
  qty = 3,
  reorderAt = 2,
)
$object StockLevel:st-GK-CPR-hal (
  id = "st-GK-CPR-hal",
  sku = "GK-CPR",
  warehouse = "wh-hal",
  qty = 2,
  reorderAt = 2,
)
$object StockLevel:st-SK-STL-hal (
  id = "st-SK-STL-hal",
  sku = "SK-STL",
  warehouse = "wh-hal",
  qty = 8,
  reorderAt = 3,
)
$object StockLevel:st-SC-BLK-ott (
  id = "st-SC-BLK-ott",
  sku = "SC-BLK",
  warehouse = "wh-ott",
  qty = 10,
  reorderAt = 4,
)
$object StockLevel:st-FI-02W-ott (
  id = "st-FI-02W-ott",
  sku = "FI-02W",
  warehouse = "wh-ott",
  qty = 40,
  reorderAt = 15,
)
$object StockLevel:st-FI-CL-hal (
  id = "st-FI-CL-hal",
  sku = "FI-CL",
  warehouse = "wh-hal",
  qty = 14,
  reorderAt = 5,
)
$object StockLevel:st-TM-58-ott (
  id = "st-TM-58-ott",
  sku = "TM-58",
  warehouse = "wh-ott",
  qty = 6,
  reorderAt = 2,
)
$object StockLevel:st-CN-500-hal (
  id = "st-CN-500-hal",
  sku = "CN-500",
  warehouse = "wh-hal",
  qty = 11,
  reorderAt = 4,
)
$object Shipment:sh-1001 (
  id = "sh-1001",
  order = "o-1001",
  carrier = "Canada Post",
  tracking = "7023 4410 0001",
  status = "delivered",
)
$object Shipment:sh-1002 (
  id = "sh-1002",
  order = "o-1002",
  carrier = "Purolator",
  tracking = "PU-55120-88",
  status = "shipped",
)
$object Shipment:sh-1003 (
  id = "sh-1003",
  order = "o-1003",
  carrier = "Canada Post",
  tracking = "7023 4410 0042",
  status = "packing",
)
$object Return:ret-1 (
  id = "ret-1",
  order = "o-1001",
  status = "requested",
  reason = "Ordered too many filters",
  lines = [{sku: "FI-02W", qty: 1}],
)

and 66 objects.