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>
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"id": "f530dc06-ef10-46b4-9903-3927f85bd9a7",
|
||||
"slug": "magnet",
|
||||
"label": "Magnet",
|
||||
"description": "Refrigerator-safe matte magnet, square or die-cut round.",
|
||||
"category": "Home",
|
||||
"options": [],
|
||||
"sizes": [
|
||||
{
|
||||
"id": "6f88ed75-7ab5-49ae-8dc5-18568da63899",
|
||||
"slug": "3x3-square",
|
||||
"label": "3\" × 3\" Square",
|
||||
"physical": {
|
||||
"width": 3,
|
||||
"height": 3,
|
||||
"unit": "in"
|
||||
},
|
||||
"canvas": {
|
||||
"width": 300,
|
||||
"height": 300
|
||||
},
|
||||
"printZone": {
|
||||
"x": 30,
|
||||
"y": 30,
|
||||
"width": 240,
|
||||
"height": 240
|
||||
},
|
||||
"silhouettePath": "M12,0 L288,0 A12,12 0 0 1 300,12 L300,288 A12,12 0 0 1 288,300 L12,300 A12,12 0 0 1 0,288 L0,12 A12,12 0 0 1 12,0 Z",
|
||||
"mockupFallbackColor": "#fef9c3",
|
||||
"basePriceCents": 700
|
||||
},
|
||||
{
|
||||
"id": "3a9d60f5-821c-4f3f-8d41-62cfeaba208a",
|
||||
"slug": "4x4-square",
|
||||
"label": "4\" × 4\" Square",
|
||||
"physical": {
|
||||
"width": 4,
|
||||
"height": 4,
|
||||
"unit": "in"
|
||||
},
|
||||
"canvas": {
|
||||
"width": 400,
|
||||
"height": 400
|
||||
},
|
||||
"printZone": {
|
||||
"x": 40,
|
||||
"y": 40,
|
||||
"width": 320,
|
||||
"height": 320
|
||||
},
|
||||
"silhouettePath": "M16,0 L384,0 A16,16 0 0 1 400,16 L400,384 A16,16 0 0 1 384,400 L16,400 A16,16 0 0 1 0,384 L0,16 A16,16 0 0 1 16,0 Z",
|
||||
"mockupFallbackColor": "#fef9c3",
|
||||
"basePriceCents": 900
|
||||
},
|
||||
{
|
||||
"id": "17e3cc66-f897-4717-8b08-c5b0308668df",
|
||||
"slug": "3in-round",
|
||||
"label": "3\" Round",
|
||||
"physical": {
|
||||
"width": 3,
|
||||
"height": 3,
|
||||
"unit": "in"
|
||||
},
|
||||
"canvas": {
|
||||
"width": 300,
|
||||
"height": 300
|
||||
},
|
||||
"printZone": {
|
||||
"x": 30,
|
||||
"y": 30,
|
||||
"width": 240,
|
||||
"height": 240
|
||||
},
|
||||
"silhouettePath": "M150,0 A150,150 0 1 0 150,300 A150,150 0 1 0 150,0 Z",
|
||||
"mockupFallbackColor": "#fde68a",
|
||||
"basePriceCents": 700
|
||||
}
|
||||
],
|
||||
"createdAt": "2026-05-25T12:31:21.554Z",
|
||||
"updatedAt": "2026-05-25T12:31:21.554Z"
|
||||
}
|
||||
Reference in New Issue
Block a user