- 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}],
)