← back to Wallco Ai
feat(/design/:id): add BreadcrumbList JSON-LD alongside existing Product schema; lets Google show 'Home › Designs › <category> › <title>' breadcrumbs in SERP
dba51ee4dccafe36e7903ca20831913005063d28 · 2026-05-14 12:29:11 -0700 · SteveStudio2
Files touched
Diff
commit dba51ee4dccafe36e7903ca20831913005063d28
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date: Thu May 14 12:29:11 2026 -0700
feat(/design/:id): add BreadcrumbList JSON-LD alongside existing Product schema; lets Google show 'Home › Designs › <category> › <title>' breadcrumbs in SERP
---
server.js | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/server.js b/server.js
index 3b05795..64dba42 100644
--- a/server.js
+++ b/server.js
@@ -5763,7 +5763,20 @@ app.get('/design/:id', (req, res) => {
design.seed && { "@type": "PropertyValue", "name": "Generation seed", "value": String(design.seed) }
].filter(Boolean);
- const schema = JSON.stringify({
+ // BreadcrumbList schema — surfaces "Home › Designs › <category> › <title>"
+ // in Google search results. Pairs with the existing Product schema so the
+ // SERP shows both rich-result card AND breadcrumbs.
+ const breadcrumbSchema = JSON.stringify({
+ "@context": "https://schema.org",
+ "@type": "BreadcrumbList",
+ "itemListElement": [
+ { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://wallco.ai/" },
+ { "@type": "ListItem", "position": 2, "name": "Designs", "item": "https://wallco.ai/designs" },
+ { "@type": "ListItem", "position": 3, "name": String(design.category || '').replace(/^./, c => c.toUpperCase()), "item": `https://wallco.ai/designs?cat=${encodeURIComponent(design.category || '')}` },
+ { "@type": "ListItem", "position": 4, "name": design.title }
+ ]
+ });
+ const productSchema = JSON.stringify({
"@context": "https://schema.org",
"@type": "Product",
"@id": `https://wallco.ai/design/${design.id}`,
@@ -5787,6 +5800,7 @@ app.get('/design/:id', (req, res) => {
"description": "Free sample available — full roll pricing on request"
}
});
+ const schema = `${productSchema}</script>\n<script type="application/ld+json">${breadcrumbSchema}`;
res.type('html').send(`${htmlHead({
title: `${design.title} — wallco.ai`,
← 6601949 feat(/designs): prefetch /design/:id on card hover with 80ms
·
back to Wallco Ai
·
feat(/designs mobile): chip-rows scroll horizontally on phon a624fa8 →