Files
apparel-designer/templates/products/6202b99a-a4a9-4f11-8b2d-32c17516ecfa/product.json
khalid@traclabs.com aba2dbedfb v0.6: template-manager owns the product catalog
The host no longer carries a runtime product catalog. products.js
shrinks to a legacy single-product stub; the canonical catalog lives in
template-manager's productsStore, seeded ONCE on first boot from the
new seedProducts.js (after that the store under templates/ is
authoritative and the seed is ignored — intentional, so restarts never
rewrite an admin-managed catalog). phoneModels.js and
templateCategories.js are the supporting constant sets, and
docs/template-schema.md documents the v4 schema.

templates/ is the admin-managed store itself (_products_index.json +
products/<id>/product.json, JSON only) — committed so the configured
catalog (sizes, pricing, options built up in the admin UI) survives a
fresh checkout rather than regressing to the seed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-01 23:28:48 -05:00

155 lines
3.9 KiB
JSON

{
"id": "6202b99a-a4a9-4f11-8b2d-32c17516ecfa",
"slug": "hoodie",
"label": "Hoodie",
"description": "Heavyweight pullover hoodie with front-and-back print options.",
"category": "Apparel",
"options": [
{
"id": "49a9bd93-84c9-4e9c-a4e6-c1e742c6777a",
"slug": "color",
"label": "Color",
"kind": "color",
"values": [
{
"id": "4e8d2854-8f0e-4c99-b854-8c0e07b59a49",
"slug": "black",
"label": "Black",
"hex": "#111827"
},
{
"id": "618c49fc-9fc6-486b-9d83-a2fff373092f",
"slug": "navy",
"label": "Navy",
"hex": "#1e3a8a"
},
{
"id": "0d1d8ec2-c7b9-40c9-9da8-9b5f1c6d1e3f",
"slug": "gray",
"label": "Heather Gray",
"hex": "#9ca3af"
}
]
}
],
"sizes": [
{
"id": "f002d98e-6601-46cb-9ed0-ad6608a794ac",
"slug": "s",
"label": "Small",
"physical": {
"width": 12,
"height": 16,
"unit": "in"
},
"canvas": {
"width": 1200,
"height": 1600
},
"printZone": {
"x": 120,
"y": 160,
"width": 960,
"height": 1280
},
"silhouettePath": "M48,0 L1152,0 A48,48 0 0 1 1200,48 L1200,1552 A48,48 0 0 1 1152,1600 L48,1600 A48,48 0 0 1 0,1552 L0,48 A48,48 0 0 1 48,0 Z",
"mockupFallbackColor": "#475569",
"basePriceCents": 4800
},
{
"id": "13849307-bed4-4654-9476-fb135561f05f",
"slug": "m",
"label": "Medium",
"physical": {
"width": 12,
"height": 16,
"unit": "in"
},
"canvas": {
"width": 1200,
"height": 1600
},
"printZone": {
"x": 120,
"y": 160,
"width": 960,
"height": 1280
},
"silhouettePath": "M48,0 L1152,0 A48,48 0 0 1 1200,48 L1200,1552 A48,48 0 0 1 1152,1600 L48,1600 A48,48 0 0 1 0,1552 L0,48 A48,48 0 0 1 48,0 Z",
"mockupFallbackColor": "#475569",
"basePriceCents": 4800
},
{
"id": "b327d6c5-8f0b-4639-b8ec-8d3f4ec74d1a",
"slug": "l",
"label": "Large",
"physical": {
"width": 12,
"height": 16,
"unit": "in"
},
"canvas": {
"width": 1200,
"height": 1600
},
"printZone": {
"x": 120,
"y": 160,
"width": 960,
"height": 1280
},
"silhouettePath": "M48,0 L1152,0 A48,48 0 0 1 1200,48 L1200,1552 A48,48 0 0 1 1152,1600 L48,1600 A48,48 0 0 1 0,1552 L0,48 A48,48 0 0 1 48,0 Z",
"mockupFallbackColor": "#475569",
"basePriceCents": 4800
},
{
"id": "af9ed947-e705-4205-87b0-6c529ce6b342",
"slug": "xl",
"label": "X-Large",
"physical": {
"width": 12,
"height": 16,
"unit": "in"
},
"canvas": {
"width": 1200,
"height": 1600
},
"printZone": {
"x": 120,
"y": 160,
"width": 960,
"height": 1280
},
"silhouettePath": "M48,0 L1152,0 A48,48 0 0 1 1200,48 L1200,1552 A48,48 0 0 1 1152,1600 L48,1600 A48,48 0 0 1 0,1552 L0,48 A48,48 0 0 1 48,0 Z",
"mockupFallbackColor": "#475569",
"basePriceCents": 5200
},
{
"id": "83156320-5f30-4cf8-b28c-3f69fcf7887e",
"slug": "xxl",
"label": "XX-Large",
"physical": {
"width": 12,
"height": 16,
"unit": "in"
},
"canvas": {
"width": 1200,
"height": 1600
},
"printZone": {
"x": 120,
"y": 160,
"width": 960,
"height": 1280
},
"silhouettePath": "M48,0 L1152,0 A48,48 0 0 1 1200,48 L1200,1552 A48,48 0 0 1 1152,1600 L48,1600 A48,48 0 0 1 0,1552 L0,48 A48,48 0 0 1 48,0 Z",
"mockupFallbackColor": "#475569",
"basePriceCents": 5400
}
],
"createdAt": "2026-05-25T12:31:21.552Z",
"updatedAt": "2026-05-25T12:31:21.552Z"
}