[object Object]

← back to Stars of Design

starsofdesign: ItemList JSON-LD on /designers + /clients index pages — top-60 each as Person ListItems. 47/47.

43b04f5d9d69af23314a76ce0cc598a9ebb8e222 · 2026-05-13 06:52:11 -0700 · Steve Abrams

Files touched

Diff

commit 43b04f5d9d69af23314a76ce0cc598a9ebb8e222
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed May 13 06:52:11 2026 -0700

    starsofdesign: ItemList JSON-LD on /designers + /clients index pages — top-60 each as Person ListItems. 47/47.
---
 routes/public.js | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/routes/public.js b/routes/public.js
index 8a9b095..2c6b919 100644
--- a/routes/public.js
+++ b/routes/public.js
@@ -89,14 +89,30 @@ router.get('/designers', (req, res, next) => {
     };
     const rows = data.filter(filt);
     const sortKey = SORTS[req.query.sort] ? req.query.sort : 'newest';
+    const sortedRows = sortDesigners(rows, sortKey);
+    const json_ld = {
+      '@context': 'https://schema.org',
+      '@type': 'ItemList',
+      itemListElement: sortedRows.slice(0, 60).map((d, i) => ({
+        '@type': 'ListItem',
+        position: i + 1,
+        item: {
+          '@type': 'Person',
+          name: d.name,
+          url: `https://starsofdesign.com/designers/${d.slug}`,
+        },
+      })),
+      numberOfItems: rows.length,
+    };
     res.render('public/designers', {
       title: 'Browse Designers — Stars of Design',
-      designers: sortDesigners(rows, sortKey),
+      designers: sortedRows,
       total: rows.length,
       sortKey,
       filter: filt,
       styles: data.allStyles(),
       eras: data.allEras(),
+      json_ld,
     });
   } catch (e) { next(e); }
 });
@@ -161,6 +177,20 @@ router.get('/clients', async (req, res, next) => {
       clientsLib.listClients({ q, area, sort, limit: 300 }),
       clientsLib.totalCount(),
     ]);
+    const json_ld = {
+      '@context': 'https://schema.org',
+      '@type': 'ItemList',
+      itemListElement: clients.slice(0, 60).map((c, i) => ({
+        '@type': 'ListItem',
+        position: i + 1,
+        item: {
+          '@type': 'Person',
+          name: c.full_name,
+          url: `https://starsofdesign.com/clients/${c.slug}`,
+        },
+      })),
+      numberOfItems: total,
+    };
     res.render('public/clients', {
       title: 'DW Client Designers — Active Buyer List | Stars of Design',
       meta_desc_override: 'The active list of interior designers and architecture firms who buy wallcoverings from Designer Wallcoverings. Pulled from order history, trade signups, and sample requests. City + state + areas served per profile (no street addresses).',
@@ -168,6 +198,7 @@ router.get('/clients', async (req, res, next) => {
       total,
       sortKey: sort,
       filter: { q, area },
+      json_ld,
     });
   } catch (e) { next(e); }
 });

← 2502570 starsofdesign: /firms index ItemList JSON-LD — first 60 firm  ·  back to Stars of Design  ·  sod smoke +3 ItemList checks on /designers /firms /clients i 9a655f6 →