← back to Dw Fleet Registry
live fleet viewer (:9774) — 119 cards, live og:image thumbs + status, per-site theme accents, sort+density; carry theme tokens in registry
bf16606466836dc72efdead0eb5307a49da43cb5 · 2026-06-01 12:46:27 -0700 · Steve Abrams
Files touched
M build-registry.mjsM dw-fleet-registry.jsonA viewer/index.htmlA viewer/server.mjs
Diff
commit bf16606466836dc72efdead0eb5307a49da43cb5
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Mon Jun 1 12:46:27 2026 -0700
live fleet viewer (:9774) — 119 cards, live og:image thumbs + status, per-site theme accents, sort+density; carry theme tokens in registry
---
build-registry.mjs | 2 +
dw-fleet-registry.json | 1194 ++++++++++++++++++++++++++++++++++++++----------
viewer/index.html | 137 ++++++
viewer/server.mjs | 67 +++
4 files changed, 1160 insertions(+), 240 deletions(-)
diff --git a/build-registry.mjs b/build-registry.mjs
index 752f7f5..65410a0 100644
--- a/build-registry.mjs
+++ b/build-registry.mjs
@@ -56,6 +56,7 @@ function scanLocal() {
hasSiteConfig: !!cfg,
domainInferred: !(cfg && cfg.domain),
port: (cfg && cfg.port) || null,
+ theme: (cfg && cfg.theme) || null,
});
}
return out;
@@ -81,6 +82,7 @@ function scanManifest() {
port: cfg.port || null,
siteEmail: cfg.siteEmail || null,
hasLocalDir: exists(path.join(PROJECTS, slug)),
+ theme: cfg.theme || null,
});
}
return out;
diff --git a/dw-fleet-registry.json b/dw-fleet-registry.json
index 6ec84e7..57790e3 100644
--- a/dw-fleet-registry.json
+++ b/dw-fleet-registry.json
@@ -1,6 +1,6 @@
{
"$schema": "dw-fleet-registry/v1",
- "generatedAt": "2026-06-01T19:19:37.047Z",
+ "generatedAt": "2026-06-01T19:45:45.840Z",
"provenance": "DTD verdict 2026-06-01 — consolidate to one canonical registry (control plane only; serving methods pluggable).",
"summary": {
"totalDomains": 119,
@@ -69,7 +69,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9856
+ "port": 9856,
+ "theme": {
+ "accent": "#c89060"
+ }
},
"manifest": null,
"live": {
@@ -79,7 +82,7 @@
"server": "nginx",
"redirectedOffDomain": "1890swallpaper.com",
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.881Z"
+ "checkedAt": "2026-06-01T19:45:47.045Z"
}
},
{
@@ -103,7 +106,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/1800wallcoverings.json",
"port": 10001,
"siteEmail": "info@1800wallcoverings.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#7d3c00",
+ "bg": "#14110d",
+ "bgLight": "#faf7f2",
+ "ink": "#f3efe8",
+ "inkLight": "#1a1714",
+ "rule": "#d8cec0",
+ "serif": "'Cormorant Garamond','Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "ivory",
+ "font": "cormorant"
+ }
},
"live": {
"state": "live",
@@ -112,7 +127,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.310Z"
+ "checkedAt": "2026-06-01T19:45:46.100Z"
}
},
{
@@ -138,7 +153,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9857
+ "port": 9857,
+ "theme": {
+ "accent": "#d4a847"
+ }
},
"manifest": null,
"live": {
@@ -148,7 +166,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.443Z"
+ "checkedAt": "2026-06-01T19:45:46.258Z"
}
},
{
@@ -174,7 +192,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#a89060"
+ }
},
"manifest": null,
"live": {
@@ -184,7 +205,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.381Z"
+ "checkedAt": "2026-06-01T19:45:46.211Z"
}
},
{
@@ -210,7 +231,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#d4a847"
+ }
},
"manifest": null,
"live": {
@@ -220,7 +244,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.425Z"
+ "checkedAt": "2026-06-01T19:45:46.323Z"
}
},
{
@@ -246,7 +270,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9837
+ "port": 9837,
+ "theme": {
+ "accent": "#9eb8c8"
+ }
},
"manifest": null,
"live": {
@@ -256,7 +283,7 @@
"server": "nginx",
"redirectedOffDomain": "1920swallpaper.com",
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.455Z"
+ "checkedAt": "2026-06-01T19:45:46.398Z"
}
},
{
@@ -282,7 +309,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9838
+ "port": 9838,
+ "theme": {
+ "accent": "#d49a55"
+ }
},
"manifest": null,
"live": {
@@ -292,7 +322,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.492Z"
+ "checkedAt": "2026-06-01T19:45:46.473Z"
}
},
{
@@ -318,7 +348,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9908
+ "port": 9908,
+ "theme": {
+ "accent": "#d8a878"
+ }
},
"manifest": null,
"live": {
@@ -328,7 +361,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.614Z"
+ "checkedAt": "2026-06-01T19:45:46.526Z"
}
},
{
@@ -354,7 +387,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9839
+ "port": 9839,
+ "theme": {
+ "accent": "#ff5cd0"
+ }
},
"manifest": null,
"live": {
@@ -364,7 +400,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.608Z"
+ "checkedAt": "2026-06-01T19:45:46.614Z"
}
},
{
@@ -390,7 +426,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#d4a047"
+ }
},
"manifest": null,
"live": {
@@ -400,7 +439,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.739Z"
+ "checkedAt": "2026-06-01T19:45:46.670Z"
}
},
{
@@ -426,7 +465,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9909
+ "port": 9909,
+ "theme": {
+ "accent": "#ff007a"
+ }
},
"manifest": null,
"live": {
@@ -436,7 +478,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.702Z"
+ "checkedAt": "2026-06-01T19:45:46.684Z"
}
},
{
@@ -462,7 +504,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#7a6a52"
+ }
},
"manifest": null,
"live": {
@@ -472,7 +517,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.745Z"
+ "checkedAt": "2026-06-01T19:45:46.832Z"
}
},
{
@@ -498,7 +543,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9893
+ "port": 9893,
+ "theme": {
+ "accent": "#a89072"
+ }
},
"manifest": null,
"live": {
@@ -508,7 +556,7 @@
"server": "nginx",
"redirectedOffDomain": "wallpapersback.com",
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.521Z"
+ "checkedAt": "2026-06-01T19:45:47.739Z"
}
},
{
@@ -534,7 +582,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#7a8a9a"
+ }
},
"manifest": null,
"live": {
@@ -544,7 +595,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.865Z"
+ "checkedAt": "2026-06-01T19:45:46.908Z"
}
},
{
@@ -568,7 +619,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/asseeninhotels.json",
"port": 10002,
"siteEmail": "info@asseeninhotels.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#b08923",
+ "bg": "#0d0b06",
+ "bgLight": "#f7f3e8",
+ "ink": "#f2ecd8",
+ "inkLight": "#1c1810",
+ "rule": "#d8caa0",
+ "serif": "'Bodoni Moda',Didot,Georgia,serif",
+ "sans": "-apple-system,'Helvetica Neue',Arial,sans-serif",
+ "palette": "gilt",
+ "font": "bodoni"
+ }
},
"live": {
"state": "live",
@@ -577,7 +640,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.878Z"
+ "checkedAt": "2026-06-01T19:45:46.932Z"
}
},
{
@@ -601,7 +664,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/asseeninla.json",
"port": 10003,
"siteEmail": "info@asseeninla.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#a8884a",
+ "bg": "#0a0a09",
+ "bgLight": "#f4f2ee",
+ "ink": "#f0ede6",
+ "inkLight": "#15140f",
+ "rule": "#cfcabf",
+ "serif": "'Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "noir",
+ "font": "playfair"
+ }
},
"live": {
"state": "live",
@@ -610,7 +685,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.897Z"
+ "checkedAt": "2026-06-01T19:45:47.036Z"
}
},
{
@@ -634,7 +709,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/asseeninmovies.json",
"port": 10004,
"siteEmail": "info@asseeninmovies.com",
- "hasLocalDir": true
+ "hasLocalDir": true,
+ "theme": {
+ "accent": "#a8884a",
+ "bg": "#0a0a09",
+ "bgLight": "#f4f2ee",
+ "ink": "#f0ede6",
+ "inkLight": "#15140f",
+ "rule": "#cfcabf",
+ "serif": "'Bodoni Moda',Didot,Georgia,serif",
+ "sans": "-apple-system,'Helvetica Neue',Arial,sans-serif",
+ "palette": "noir",
+ "font": "bodoni"
+ }
},
"live": {
"state": "live",
@@ -643,7 +730,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.915Z"
+ "checkedAt": "2026-06-01T19:45:47.075Z"
}
},
{
@@ -667,7 +754,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/asseeninshowrooms.json",
"port": 10005,
"siteEmail": "info@asseeninshowrooms.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#3a5f8a",
+ "bg": "#0c0e11",
+ "bgLight": "#eef0f2",
+ "ink": "#e8eaee",
+ "inkLight": "#161a1e",
+ "rule": "#c4cad0",
+ "serif": "'Cormorant Garamond','Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "slate",
+ "font": "cormorant"
+ }
},
"live": {
"state": "live",
@@ -676,7 +775,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.983Z"
+ "checkedAt": "2026-06-01T19:45:47.172Z"
}
},
{
@@ -700,7 +799,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/barwallpaper.json",
"port": 10006,
"siteEmail": "info@barwallpaper.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#7a2230",
+ "bg": "#120a08",
+ "bgLight": "#f6f0ee",
+ "ink": "#f0e6e2",
+ "inkLight": "#1d1310",
+ "rule": "#d4c2bb",
+ "serif": "'Bodoni Moda',Didot,Georgia,serif",
+ "sans": "-apple-system,'Helvetica Neue',Arial,sans-serif",
+ "palette": "bordeaux",
+ "font": "bodoni"
+ }
},
"live": {
"state": "live",
@@ -709,7 +820,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:37.982Z"
+ "checkedAt": "2026-06-01T19:45:47.206Z"
}
},
{
@@ -735,7 +846,8 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9920
+ "port": 9920,
+ "theme": null
},
"manifest": null,
"live": {
@@ -745,7 +857,7 @@
"server": null,
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.153Z"
+ "checkedAt": "2026-06-01T19:45:47.346Z"
}
},
{
@@ -769,7 +881,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/blankstocklining.json",
"port": 10007,
"siteEmail": "info@blankstocklining.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#444440",
+ "bg": "#080807",
+ "bgLight": "#f1f1f0",
+ "ink": "#ededec",
+ "inkLight": "#121211",
+ "rule": "#c8c8c5",
+ "serif": "Georgia,'Times New Roman',serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "ink",
+ "font": "georgia"
+ }
},
"live": {
"state": "live",
@@ -778,7 +902,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.008Z"
+ "checkedAt": "2026-06-01T19:45:47.341Z"
}
},
{
@@ -802,7 +926,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/bleachfriendly.json",
"port": 10008,
"siteEmail": "info@bleachfriendly.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#2a7d8a",
+ "bg": "#0a1113",
+ "bgLight": "#f0f4f5",
+ "ink": "#e6eef0",
+ "inkLight": "#10191c",
+ "rule": "#bdcdd0",
+ "serif": "'Cormorant Garamond','Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "coastal",
+ "font": "cormorant"
+ }
},
"live": {
"state": "live",
@@ -811,7 +947,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.154Z"
+ "checkedAt": "2026-06-01T19:45:47.323Z"
}
},
{
@@ -837,7 +973,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9895
+ "port": 9895,
+ "theme": {
+ "accent": "#b85c40"
+ }
},
"manifest": null,
"live": {
@@ -847,7 +986,7 @@
"server": "nginx",
"redirectedOffDomain": "handcraftedwallpaper.com",
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.885Z"
+ "checkedAt": "2026-06-01T19:45:48.494Z"
}
},
{
@@ -871,7 +1010,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/carmelwallpaper.json",
"port": 10009,
"siteEmail": "info@carmelwallpaper.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#5a6f3e",
+ "bg": "#10120c",
+ "bgLight": "#f3f4ee",
+ "ink": "#eef0e6",
+ "inkLight": "#1c1f17",
+ "rule": "#cdd0c0",
+ "serif": "'Cormorant Garamond','Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "sage",
+ "font": "cormorant"
+ }
},
"clusterCanonical": "carmelwallpaper.com",
"isCanonical": true,
@@ -883,7 +1034,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.324Z"
+ "checkedAt": "2026-06-01T19:45:47.507Z"
}
},
{
@@ -909,7 +1060,15 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9832
+ "port": 9832,
+ "theme": {
+ "accent": "#8B7355",
+ "accentSoft": "#b8a48a",
+ "bg": "#12100d",
+ "bgLight": "#f7f3ec",
+ "ink": "#f0ebe3",
+ "inkLight": "#1a1612"
+ }
},
"manifest": null,
"clusterCanonical": "carmelwallpaper.com",
@@ -922,7 +1081,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.212Z"
+ "checkedAt": "2026-06-01T19:45:47.603Z"
}
},
{
@@ -946,7 +1105,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/cfafabrics.json",
"port": 10010,
"siteEmail": "info@cfafabrics.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#a85a5f",
+ "bg": "#130c0b",
+ "bgLight": "#f8f1f0",
+ "ink": "#f1e6e3",
+ "inkLight": "#1f1614",
+ "rule": "#dcc8c4",
+ "serif": "'Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "blush",
+ "font": "playfair"
+ }
},
"live": {
"state": "live",
@@ -955,7 +1126,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.368Z"
+ "checkedAt": "2026-06-01T19:45:47.602Z"
}
},
{
@@ -981,7 +1152,8 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -991,7 +1163,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.403Z"
+ "checkedAt": "2026-06-01T19:45:47.729Z"
}
},
{
@@ -1015,7 +1187,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/classawallcovering.json",
"port": 10011,
"siteEmail": "info@classawallcovering.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#3a5f8a",
+ "bg": "#0c0e11",
+ "bgLight": "#eef0f2",
+ "ink": "#e8eaee",
+ "inkLight": "#161a1e",
+ "rule": "#c4cad0",
+ "serif": "'Cormorant Garamond','Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "slate",
+ "font": "cormorant"
+ }
},
"live": {
"state": "live",
@@ -1024,7 +1208,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.476Z"
+ "checkedAt": "2026-06-01T19:45:47.904Z"
}
},
{
@@ -1048,7 +1232,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/commercialsalesreps.json",
"port": 10012,
"siteEmail": "info@commercialsalesreps.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#444440",
+ "bg": "#080807",
+ "bgLight": "#f1f1f0",
+ "ink": "#ededec",
+ "inkLight": "#121211",
+ "rule": "#c8c8c5",
+ "serif": "Georgia,'Times New Roman',serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "ink",
+ "font": "georgia"
+ }
},
"live": {
"state": "live",
@@ -1057,7 +1253,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.592Z"
+ "checkedAt": "2026-06-01T19:45:47.896Z"
}
},
{
@@ -1081,7 +1277,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/commercialwallcovering.json",
"port": 10013,
"siteEmail": "info@commercialwallcovering.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#3a5f8a",
+ "bg": "#0c0e11",
+ "bgLight": "#eef0f2",
+ "ink": "#e8eaee",
+ "inkLight": "#161a1e",
+ "rule": "#c4cad0",
+ "serif": "'Cormorant Garamond','Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "slate",
+ "font": "cormorant"
+ }
},
"live": {
"state": "live",
@@ -1090,7 +1298,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.611Z"
+ "checkedAt": "2026-06-01T19:45:47.988Z"
}
},
{
@@ -1116,7 +1324,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9849
+ "port": 9849,
+ "theme": {
+ "accent": "#7ea8d4"
+ }
},
"manifest": null,
"live": {
@@ -1126,7 +1337,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.727Z"
+ "checkedAt": "2026-06-01T19:45:48.043Z"
}
},
{
@@ -1152,7 +1363,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9848
+ "port": 9848,
+ "theme": {
+ "accent": "#a87030"
+ }
},
"manifest": null,
"live": {
@@ -1162,7 +1376,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.813Z"
+ "checkedAt": "2026-06-01T19:45:48.129Z"
}
},
{
@@ -1188,7 +1402,8 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -1198,7 +1413,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.741Z"
+ "checkedAt": "2026-06-01T19:45:48.124Z"
}
},
{
@@ -1222,7 +1437,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/designermagnetics.json",
"port": 10014,
"siteEmail": "info@designermagnetics.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#3a5f8a",
+ "bg": "#0c0e11",
+ "bgLight": "#eef0f2",
+ "ink": "#e8eaee",
+ "inkLight": "#161a1e",
+ "rule": "#c4cad0",
+ "serif": "'Bodoni Moda',Didot,Georgia,serif",
+ "sans": "-apple-system,'Helvetica Neue',Arial,sans-serif",
+ "palette": "slate",
+ "font": "bodoni"
+ }
},
"live": {
"state": "live",
@@ -1231,7 +1458,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.840Z"
+ "checkedAt": "2026-06-01T19:45:48.246Z"
}
},
{
@@ -1257,7 +1484,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -1267,7 +1495,7 @@
"server": "cloudflare",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.812Z"
+ "checkedAt": "2026-06-01T19:45:49.214Z"
}
},
{
@@ -1293,7 +1521,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#8c4a6a"
+ }
},
"manifest": null,
"live": {
@@ -1303,7 +1534,7 @@
"server": "nginx",
"redirectedOffDomain": "fabricwallpaper.com",
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.713Z"
+ "checkedAt": "2026-06-01T19:45:49.107Z"
}
},
{
@@ -1327,7 +1558,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/etciemurals.json",
"port": 10015,
"siteEmail": "info@etciemurals.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#6a3a7a",
+ "bg": "#0e0a10",
+ "bgLight": "#f3eff3",
+ "ink": "#ece4ee",
+ "inkLight": "#1a131c",
+ "rule": "#cdc1d0",
+ "serif": "'Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "plum",
+ "font": "playfair"
+ }
},
"live": {
"state": "live",
@@ -1336,7 +1579,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.953Z"
+ "checkedAt": "2026-06-01T19:45:48.389Z"
}
},
{
@@ -1360,7 +1603,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/fabricfridays.json",
"port": 10016,
"siteEmail": "info@fabricfridays.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#a85a5f",
+ "bg": "#130c0b",
+ "bgLight": "#f8f1f0",
+ "ink": "#f1e6e3",
+ "inkLight": "#1f1614",
+ "rule": "#dcc8c4",
+ "serif": "'Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "blush",
+ "font": "playfair"
+ }
},
"live": {
"state": "live",
@@ -1369,7 +1624,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:38.976Z"
+ "checkedAt": "2026-06-01T19:45:48.511Z"
}
},
{
@@ -1395,7 +1650,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9846
+ "port": 9846,
+ "theme": {
+ "accent": "#b89060"
+ }
},
"manifest": null,
"live": {
@@ -1405,7 +1663,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.139Z"
+ "checkedAt": "2026-06-01T19:45:48.646Z"
}
},
{
@@ -1429,7 +1687,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/fireratedwallcovering.json",
"port": 10017,
"siteEmail": "info@fireratedwallcovering.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#3a5f8a",
+ "bg": "#0c0e11",
+ "bgLight": "#eef0f2",
+ "ink": "#e8eaee",
+ "inkLight": "#161a1e",
+ "rule": "#c4cad0",
+ "serif": "Georgia,'Times New Roman',serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "slate",
+ "font": "georgia"
+ }
},
"live": {
"state": "live",
@@ -1438,7 +1708,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.105Z"
+ "checkedAt": "2026-06-01T19:45:48.643Z"
}
},
{
@@ -1462,7 +1732,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/flocked.json",
"port": 10018,
"siteEmail": "info@flocked.org",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#7a2230",
+ "bg": "#120a08",
+ "bgLight": "#f6f0ee",
+ "ink": "#f0e6e2",
+ "inkLight": "#1d1310",
+ "rule": "#d4c2bb",
+ "serif": "'Bodoni Moda',Didot,Georgia,serif",
+ "sans": "-apple-system,'Helvetica Neue',Arial,sans-serif",
+ "palette": "bordeaux",
+ "font": "bodoni"
+ }
},
"clusterCanonical": "flockedwallpaper.com",
"isCanonical": false,
@@ -1474,7 +1756,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.200Z"
+ "checkedAt": "2026-06-01T19:45:48.700Z"
}
},
{
@@ -1500,7 +1782,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"clusterCanonical": "flockedwallpaper.com",
@@ -1513,7 +1796,7 @@
"server": "cloudflare",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.276Z"
+ "checkedAt": "2026-06-01T19:45:48.826Z"
}
},
{
@@ -1539,7 +1822,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -1549,7 +1833,7 @@
"server": "cloudflare",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.437Z"
+ "checkedAt": "2026-06-01T19:45:48.827Z"
}
},
{
@@ -1575,7 +1859,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#d4af37"
+ }
},
"manifest": null,
"live": {
@@ -1585,7 +1872,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.345Z"
+ "checkedAt": "2026-06-01T19:45:48.929Z"
}
},
{
@@ -1611,7 +1898,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -1621,7 +1909,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.479Z"
+ "checkedAt": "2026-06-01T19:45:48.943Z"
}
},
{
@@ -1645,7 +1933,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/grassclothwallcovering.json",
"port": 10019,
"siteEmail": "info@grassclothwallcovering.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#5a6f3e",
+ "bg": "#10120c",
+ "bgLight": "#f3f4ee",
+ "ink": "#eef0e6",
+ "inkLight": "#1c1f17",
+ "rule": "#cdd0c0",
+ "serif": "'Cormorant Garamond','Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "sage",
+ "font": "cormorant"
+ }
},
"live": {
"state": "live",
@@ -1654,7 +1954,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.414Z"
+ "checkedAt": "2026-06-01T19:45:49.040Z"
}
},
{
@@ -1680,7 +1980,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#5a7a4a"
+ }
},
"manifest": null,
"live": {
@@ -1690,7 +1993,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.547Z"
+ "checkedAt": "2026-06-01T19:45:49.105Z"
}
},
{
@@ -1716,7 +2019,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9897
+ "port": 9897,
+ "theme": {
+ "accent": "#a07050"
+ }
},
"manifest": null,
"live": {
@@ -1726,7 +2032,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.489Z"
+ "checkedAt": "2026-06-01T19:45:49.046Z"
}
},
{
@@ -1750,7 +2056,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/handmadewallcovering.json",
"port": 10020,
"siteEmail": "info@handmadewallcovering.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#9c6b30",
+ "bg": "#16120a",
+ "bgLight": "#f6f1e7",
+ "ink": "#f1ead9",
+ "inkLight": "#211c12",
+ "rule": "#d6c9ad",
+ "serif": "'Cormorant Garamond','Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "sand",
+ "font": "cormorant"
+ }
},
"live": {
"state": "live",
@@ -1759,7 +2077,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.616Z"
+ "checkedAt": "2026-06-01T19:45:49.173Z"
}
},
{
@@ -1785,7 +2103,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9859
+ "port": 9859,
+ "theme": {
+ "accent": "#80c8b8"
+ }
},
"manifest": null,
"live": {
@@ -1795,7 +2116,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.675Z"
+ "checkedAt": "2026-06-01T19:45:49.221Z"
}
},
{
@@ -1819,7 +2140,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/hollywoodwallcovering.json",
"port": 10021,
"siteEmail": "info@hollywoodwallcovering.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#b08923",
+ "bg": "#0d0b06",
+ "bgLight": "#f7f3e8",
+ "ink": "#f2ecd8",
+ "inkLight": "#1c1810",
+ "rule": "#d8caa0",
+ "serif": "'Bodoni Moda',Didot,Georgia,serif",
+ "sans": "-apple-system,'Helvetica Neue',Arial,sans-serif",
+ "palette": "gilt",
+ "font": "bodoni"
+ }
},
"clusterCanonical": "hollywoodwallcoverings.com",
"isCanonical": false,
@@ -1831,7 +2164,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.687Z"
+ "checkedAt": "2026-06-01T19:45:49.276Z"
}
},
{
@@ -1857,7 +2190,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#b89060"
+ }
},
"manifest": null,
"clusterCanonical": "hollywoodwallcoverings.com",
@@ -1870,7 +2206,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.857Z"
+ "checkedAt": "2026-06-01T19:45:49.344Z"
}
},
{
@@ -1896,7 +2232,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -1906,7 +2243,7 @@
"server": null,
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.799Z"
+ "checkedAt": "2026-06-01T19:45:49.512Z"
}
},
{
@@ -1930,7 +2267,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/hospitalitysalesagency.json",
"port": 10022,
"siteEmail": "info@hospitalitysalesagency.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#b08923",
+ "bg": "#0d0b06",
+ "bgLight": "#f7f3e8",
+ "ink": "#f2ecd8",
+ "inkLight": "#1c1810",
+ "rule": "#d8caa0",
+ "serif": "Georgia,'Times New Roman',serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "gilt",
+ "font": "georgia"
+ }
},
"live": {
"state": "live",
@@ -1939,7 +2288,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.814Z"
+ "checkedAt": "2026-06-01T19:45:49.454Z"
}
},
{
@@ -1965,7 +2314,12 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9866
+ "port": 9866,
+ "theme": {
+ "bg": "#0E1116",
+ "paper": "#F2EBDD",
+ "accent": "#A88A4F"
+ }
},
"manifest": null,
"clusterCanonical": "hospitalitywallcoverings.com",
@@ -1978,7 +2332,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.897Z"
+ "checkedAt": "2026-06-01T19:45:49.551Z"
}
},
{
@@ -2004,7 +2358,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9855
+ "port": 9855,
+ "theme": {
+ "accent": "#d4a847"
+ }
},
"manifest": null,
"clusterCanonical": "hospitalitywallcoverings.com",
@@ -2017,7 +2374,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:39.993Z"
+ "checkedAt": "2026-06-01T19:45:49.625Z"
}
},
{
@@ -2043,7 +2400,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9910
+ "port": 9910,
+ "theme": {
+ "accent": "#d4a847"
+ }
},
"manifest": null,
"live": {
@@ -2053,7 +2413,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.042Z"
+ "checkedAt": "2026-06-01T19:45:49.706Z"
}
},
{
@@ -2079,7 +2439,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9911
+ "port": 9911,
+ "theme": {
+ "accent": "#c89858"
+ }
},
"manifest": null,
"live": {
@@ -2089,7 +2452,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.118Z"
+ "checkedAt": "2026-06-01T19:45:49.735Z"
}
},
{
@@ -2115,7 +2478,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9842
+ "port": 9842,
+ "theme": {
+ "accent": "#a89060"
+ }
},
"manifest": null,
"live": {
@@ -2125,7 +2491,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.171Z"
+ "checkedAt": "2026-06-01T19:45:49.844Z"
}
},
{
@@ -2151,7 +2517,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#8c6a3a"
+ }
},
"manifest": null,
"live": {
@@ -2161,7 +2530,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.254Z"
+ "checkedAt": "2026-06-01T19:45:49.895Z"
}
},
{
@@ -2185,7 +2554,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/malibuwallpaper.json",
"port": 10023,
"siteEmail": "info@malibuwallpaper.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#2a7d8a",
+ "bg": "#0a1113",
+ "bgLight": "#f0f4f5",
+ "ink": "#e6eef0",
+ "inkLight": "#10191c",
+ "rule": "#bdcdd0",
+ "serif": "'Cormorant Garamond','Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "coastal",
+ "font": "cormorant"
+ }
},
"live": {
"state": "live",
@@ -2194,7 +2575,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.304Z"
+ "checkedAt": "2026-06-01T19:45:49.936Z"
}
},
{
@@ -2220,7 +2601,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9847
+ "port": 9847,
+ "theme": {
+ "accent": "#c8a878"
+ }
},
"manifest": null,
"live": {
@@ -2230,7 +2614,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.384Z"
+ "checkedAt": "2026-06-01T19:45:50.031Z"
}
},
{
@@ -2256,7 +2640,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#b8a87c"
+ }
},
"manifest": null,
"live": {
@@ -2266,7 +2653,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.447Z"
+ "checkedAt": "2026-06-01T19:45:50.097Z"
}
},
{
@@ -2290,7 +2677,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/montereywallpaper.json",
"port": 10024,
"siteEmail": "info@montereywallpaper.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#5a6f3e",
+ "bg": "#10120c",
+ "bgLight": "#f3f4ee",
+ "ink": "#eef0e6",
+ "inkLight": "#1c1f17",
+ "rule": "#cdd0c0",
+ "serif": "'Cormorant Garamond','Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "sage",
+ "font": "cormorant"
+ }
},
"live": {
"state": "live",
@@ -2299,7 +2698,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.504Z"
+ "checkedAt": "2026-06-01T19:45:50.127Z"
}
},
{
@@ -2325,7 +2724,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9899
+ "port": 9899,
+ "theme": {
+ "accent": "#6a5a4a"
+ }
},
"manifest": null,
"live": {
@@ -2335,7 +2737,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.632Z"
+ "checkedAt": "2026-06-01T19:45:50.230Z"
}
},
{
@@ -2361,7 +2763,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#c0c0c0"
+ }
},
"manifest": null,
"live": {
@@ -2371,7 +2776,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.572Z"
+ "checkedAt": "2026-06-01T19:45:50.304Z"
}
},
{
@@ -2397,7 +2802,8 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -2407,7 +2813,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.716Z"
+ "checkedAt": "2026-06-01T19:45:50.328Z"
}
},
{
@@ -2433,7 +2839,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9900
+ "port": 9900,
+ "theme": {
+ "accent": "#9a8a6a"
+ }
},
"manifest": null,
"live": {
@@ -2443,7 +2852,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.677Z"
+ "checkedAt": "2026-06-01T19:45:50.454Z"
}
},
{
@@ -2467,7 +2876,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/naturalwalltextures.json",
"port": 10025,
"siteEmail": "info@naturalwalltextures.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#5a6f3e",
+ "bg": "#10120c",
+ "bgLight": "#f3f4ee",
+ "ink": "#eef0e6",
+ "inkLight": "#1c1f17",
+ "rule": "#cdd0c0",
+ "serif": "'Cormorant Garamond','Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "sage",
+ "font": "cormorant"
+ }
},
"live": {
"state": "live",
@@ -2476,7 +2897,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.783Z"
+ "checkedAt": "2026-06-01T19:45:50.406Z"
}
},
{
@@ -2502,7 +2923,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#e8c0c8"
+ }
},
"manifest": null,
"live": {
@@ -2512,7 +2936,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.781Z"
+ "checkedAt": "2026-06-01T19:45:50.514Z"
}
},
{
@@ -2536,7 +2960,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/patterndesignlab.json",
"port": 10026,
"siteEmail": "info@patterndesignlab.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#6a3a7a",
+ "bg": "#0e0a10",
+ "bgLight": "#f3eff3",
+ "ink": "#ece4ee",
+ "inkLight": "#1a131c",
+ "rule": "#cdc1d0",
+ "serif": "'Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "plum",
+ "font": "playfair"
+ }
},
"live": {
"state": "live",
@@ -2545,7 +2981,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.855Z"
+ "checkedAt": "2026-06-01T19:45:50.583Z"
}
},
{
@@ -2571,7 +3007,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -2581,7 +3018,7 @@
"server": "cloudflare",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.949Z"
+ "checkedAt": "2026-06-01T19:45:50.647Z"
}
},
{
@@ -2605,7 +3042,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/philliperomano.json",
"port": 10027,
"siteEmail": "info@philliperomano.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#a8884a",
+ "bg": "#0a0a09",
+ "bgLight": "#f4f2ee",
+ "ink": "#f0ede6",
+ "inkLight": "#15140f",
+ "rule": "#cfcabf",
+ "serif": "'Bodoni Moda',Didot,Georgia,serif",
+ "sans": "-apple-system,'Helvetica Neue',Arial,sans-serif",
+ "palette": "noir",
+ "font": "bodoni"
+ }
},
"live": {
"state": "live",
@@ -2614,7 +3063,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.019Z"
+ "checkedAt": "2026-06-01T19:45:50.748Z"
}
},
{
@@ -2638,7 +3087,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/printmurals.json",
"port": 10028,
"siteEmail": "info@printmurals.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#6a3a7a",
+ "bg": "#0e0a10",
+ "bgLight": "#f3eff3",
+ "ink": "#ece4ee",
+ "inkLight": "#1a131c",
+ "rule": "#cdc1d0",
+ "serif": "'Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "plum",
+ "font": "playfair"
+ }
},
"live": {
"state": "live",
@@ -2647,7 +3108,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.932Z"
+ "checkedAt": "2026-06-01T19:45:50.773Z"
}
},
{
@@ -2673,7 +3134,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9845
+ "port": 9845,
+ "theme": {
+ "accent": "#b89058"
+ }
},
"manifest": null,
"clusterCanonical": "raffiawallcoverings.com",
@@ -2686,7 +3150,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:40.957Z"
+ "checkedAt": "2026-06-01T19:45:50.855Z"
}
},
{
@@ -2712,7 +3176,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9901
+ "port": 9901,
+ "theme": {
+ "accent": "#b89058"
+ }
},
"manifest": null,
"clusterCanonical": "raffiawallcoverings.com",
@@ -2725,7 +3192,7 @@
"server": "nginx",
"redirectedOffDomain": "raffiawallcoverings.com",
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.152Z"
+ "checkedAt": "2026-06-01T19:45:50.882Z"
}
},
{
@@ -2751,7 +3218,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9902
+ "port": 9902,
+ "theme": {
+ "accent": "#5a8a6a"
+ }
},
"manifest": null,
"live": {
@@ -2761,7 +3231,7 @@
"server": "nginx",
"redirectedOffDomain": "naturalwallcoverings.com",
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.301Z"
+ "checkedAt": "2026-06-01T19:45:50.974Z"
}
},
{
@@ -2785,7 +3255,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/restaurantfabrics.json",
"port": 10029,
"siteEmail": "info@restaurantfabrics.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#7a2230",
+ "bg": "#120a08",
+ "bgLight": "#f6f0ee",
+ "ink": "#f0e6e2",
+ "inkLight": "#1d1310",
+ "rule": "#d4c2bb",
+ "serif": "'Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "bordeaux",
+ "font": "playfair"
+ }
},
"live": {
"state": "live",
@@ -2794,7 +3276,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.192Z"
+ "checkedAt": "2026-06-01T19:45:51.014Z"
}
},
{
@@ -2818,7 +3300,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/restaurantmurals.json",
"port": 10030,
"siteEmail": "info@restaurantmurals.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#7a2230",
+ "bg": "#120a08",
+ "bgLight": "#f6f0ee",
+ "ink": "#f0e6e2",
+ "inkLight": "#1d1310",
+ "rule": "#d4c2bb",
+ "serif": "'Bodoni Moda',Didot,Georgia,serif",
+ "sans": "-apple-system,'Helvetica Neue',Arial,sans-serif",
+ "palette": "bordeaux",
+ "font": "bodoni"
+ }
},
"live": {
"state": "live",
@@ -2827,7 +3321,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.189Z"
+ "checkedAt": "2026-06-01T19:45:51.052Z"
}
},
{
@@ -2853,7 +3347,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9854
+ "port": 9854,
+ "theme": {
+ "accent": "#a04030"
+ }
},
"manifest": null,
"live": {
@@ -2863,7 +3360,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.366Z"
+ "checkedAt": "2026-06-01T19:45:51.114Z"
}
},
{
@@ -2889,7 +3386,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9903
+ "port": 9903,
+ "theme": {
+ "accent": "#8a6a4a"
+ }
},
"manifest": null,
"live": {
@@ -2899,7 +3399,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.379Z"
+ "checkedAt": "2026-06-01T19:45:51.224Z"
}
},
{
@@ -2923,7 +3423,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/roomsettings.json",
"port": 10031,
"siteEmail": "info@roomsettings.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#7d3c00",
+ "bg": "#14110d",
+ "bgLight": "#faf7f2",
+ "ink": "#f3efe8",
+ "inkLight": "#1a1714",
+ "rule": "#d8cec0",
+ "serif": "'Cormorant Garamond','Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "ivory",
+ "font": "cormorant"
+ }
},
"live": {
"state": "live",
@@ -2932,7 +3444,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.503Z"
+ "checkedAt": "2026-06-01T19:45:51.234Z"
}
},
{
@@ -2958,7 +3470,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#a04030"
+ }
},
"manifest": null,
"live": {
@@ -2968,7 +3483,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.391Z"
+ "checkedAt": "2026-06-01T19:45:51.359Z"
}
},
{
@@ -2994,7 +3509,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9904
+ "port": 9904,
+ "theme": {
+ "accent": "#3a5a8a"
+ }
},
"manifest": null,
"live": {
@@ -3004,7 +3522,7 @@
"server": "nginx",
"redirectedOffDomain": "handcraftedwallpaper.com",
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.537Z"
+ "checkedAt": "2026-06-01T19:45:51.390Z"
}
},
{
@@ -3030,7 +3548,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9905
+ "port": 9905,
+ "theme": {
+ "accent": "#5a8aa8"
+ }
},
"manifest": null,
"live": {
@@ -3040,7 +3561,7 @@
"server": "nginx",
"redirectedOffDomain": "wallpapersback.com",
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.629Z"
+ "checkedAt": "2026-06-01T19:45:53.174Z"
}
},
{
@@ -3064,7 +3585,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/sheltermagazines.json",
"port": 10032,
"siteEmail": "info@sheltermagazines.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#a8884a",
+ "bg": "#0a0a09",
+ "bgLight": "#f4f2ee",
+ "ink": "#f0ede6",
+ "inkLight": "#15140f",
+ "rule": "#cfcabf",
+ "serif": "'Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "noir",
+ "font": "playfair"
+ }
},
"live": {
"state": "live",
@@ -3073,7 +3606,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.642Z"
+ "checkedAt": "2026-06-01T19:45:51.468Z"
}
},
{
@@ -3099,7 +3632,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#c8a878"
+ }
},
"manifest": null,
"clusterCanonical": "silkwallpaper.com",
@@ -3112,7 +3648,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.712Z"
+ "checkedAt": "2026-06-01T19:45:51.595Z"
}
},
{
@@ -3138,7 +3674,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#c8a878"
+ }
},
"manifest": null,
"clusterCanonical": "silkwallpaper.com",
@@ -3151,7 +3690,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.825Z"
+ "checkedAt": "2026-06-01T19:45:51.633Z"
}
},
{
@@ -3177,7 +3716,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9912
+ "port": 9912,
+ "theme": {
+ "accent": "#c8c8d4"
+ }
},
"manifest": null,
"live": {
@@ -3187,7 +3729,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.811Z"
+ "checkedAt": "2026-06-01T19:45:51.753Z"
}
},
{
@@ -3211,7 +3753,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/specifywallpaper.json",
"port": 10033,
"siteEmail": "info@specifywallpaper.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#3a5f8a",
+ "bg": "#0c0e11",
+ "bgLight": "#eef0f2",
+ "ink": "#e8eaee",
+ "inkLight": "#161a1e",
+ "rule": "#c4cad0",
+ "serif": "Georgia,'Times New Roman',serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "slate",
+ "font": "georgia"
+ }
},
"live": {
"state": "live",
@@ -3220,7 +3774,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.928Z"
+ "checkedAt": "2026-06-01T19:45:51.788Z"
}
},
{
@@ -3244,7 +3798,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/stevenabramsphotography.json",
"port": 10034,
"siteEmail": "info@stevenabramsphotography.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#444440",
+ "bg": "#080807",
+ "bgLight": "#f1f1f0",
+ "ink": "#ededec",
+ "inkLight": "#121211",
+ "rule": "#c8c8c5",
+ "serif": "'Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "ink",
+ "font": "playfair"
+ }
},
"live": {
"state": "live",
@@ -3253,7 +3819,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:41.933Z"
+ "checkedAt": "2026-06-01T19:45:51.877Z"
}
},
{
@@ -3279,7 +3845,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9906
+ "port": 9906,
+ "theme": {
+ "accent": "#8a7a5a"
+ }
},
"manifest": null,
"live": {
@@ -3289,7 +3858,7 @@
"server": "nginx",
"redirectedOffDomain": "linenwallpaper.com",
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.075Z"
+ "checkedAt": "2026-06-01T19:45:51.964Z"
}
},
{
@@ -3315,7 +3884,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": 9907
+ "port": 9907,
+ "theme": {
+ "accent": "#6a4a3a"
+ }
},
"manifest": null,
"live": {
@@ -3325,7 +3897,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.074Z"
+ "checkedAt": "2026-06-01T19:45:51.995Z"
}
},
{
@@ -3351,7 +3923,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -3361,7 +3934,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.099Z"
+ "checkedAt": "2026-06-01T19:45:52.054Z"
}
},
{
@@ -3387,7 +3960,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#7a6a5a"
+ }
},
"manifest": null,
"live": {
@@ -3397,7 +3973,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.209Z"
+ "checkedAt": "2026-06-01T19:45:52.085Z"
}
},
{
@@ -3421,7 +3997,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/thehotelwallpaper.json",
"port": 10035,
"siteEmail": "info@thehotelwallpaper.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#b08923",
+ "bg": "#0d0b06",
+ "bgLight": "#f7f3e8",
+ "ink": "#f2ecd8",
+ "inkLight": "#1c1810",
+ "rule": "#d8caa0",
+ "serif": "'Bodoni Moda',Didot,Georgia,serif",
+ "sans": "-apple-system,'Helvetica Neue',Arial,sans-serif",
+ "palette": "gilt",
+ "font": "bodoni"
+ }
},
"live": {
"state": "live",
@@ -3430,7 +4018,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.232Z"
+ "checkedAt": "2026-06-01T19:45:52.152Z"
}
},
{
@@ -3456,7 +4044,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -3466,7 +4055,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.345Z"
+ "checkedAt": "2026-06-01T19:45:52.171Z"
}
},
{
@@ -3490,7 +4079,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/traditionalwhimsy.json",
"port": 10036,
"siteEmail": "info@traditionalwhimsy.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#a85a5f",
+ "bg": "#130c0b",
+ "bgLight": "#f8f1f0",
+ "ink": "#f1e6e3",
+ "inkLight": "#1f1614",
+ "rule": "#dcc8c4",
+ "serif": "'Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "blush",
+ "font": "playfair"
+ }
},
"live": {
"state": "live",
@@ -3499,7 +4100,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.232Z"
+ "checkedAt": "2026-06-01T19:45:52.254Z"
}
},
{
@@ -3523,7 +4124,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/unitedstateswallpaper.json",
"port": 10037,
"siteEmail": "info@unitedstateswallpaper.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#3a5f8a",
+ "bg": "#0c0e11",
+ "bgLight": "#eef0f2",
+ "ink": "#e8eaee",
+ "inkLight": "#161a1e",
+ "rule": "#c4cad0",
+ "serif": "Georgia,'Times New Roman',serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "slate",
+ "font": "georgia"
+ }
},
"live": {
"state": "live",
@@ -3532,7 +4145,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.255Z"
+ "checkedAt": "2026-06-01T19:45:52.381Z"
}
},
{
@@ -3558,7 +4171,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#5a6a8a"
+ }
},
"manifest": null,
"live": {
@@ -3568,7 +4184,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.337Z"
+ "checkedAt": "2026-06-01T19:45:52.446Z"
}
},
{
@@ -3594,7 +4210,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -3604,7 +4221,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.356Z"
+ "checkedAt": "2026-06-01T19:45:52.406Z"
}
},
{
@@ -3630,7 +4247,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -3640,7 +4258,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:43.366Z"
+ "checkedAt": "2026-06-01T19:45:53.486Z"
}
},
{
@@ -3664,7 +4282,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/wallcovering.json",
"port": 10038,
"siteEmail": "info@wallcovering.net",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#7d3c00",
+ "bg": "#14110d",
+ "bgLight": "#faf7f2",
+ "ink": "#f3efe8",
+ "inkLight": "#1a1714",
+ "rule": "#d8cec0",
+ "serif": "'Cormorant Garamond','Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "ivory",
+ "font": "cormorant"
+ }
},
"live": {
"state": "live",
@@ -3673,7 +4303,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.391Z"
+ "checkedAt": "2026-06-01T19:45:52.529Z"
}
},
{
@@ -3699,7 +4329,10 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": {
+ "accent": "#d4a847"
+ }
},
"manifest": null,
"live": {
@@ -3709,7 +4342,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.540Z"
+ "checkedAt": "2026-06-01T19:45:52.684Z"
}
},
{
@@ -3735,7 +4368,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -3745,7 +4379,7 @@
"server": null,
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.605Z"
+ "checkedAt": "2026-06-01T19:45:52.786Z"
}
},
{
@@ -3771,7 +4405,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -3781,7 +4416,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.611Z"
+ "checkedAt": "2026-06-01T19:45:52.747Z"
}
},
{
@@ -3807,7 +4442,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -3817,7 +4453,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.684Z"
+ "checkedAt": "2026-06-01T19:45:52.763Z"
}
},
{
@@ -3843,7 +4479,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -3853,7 +4490,7 @@
"server": null,
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.805Z"
+ "checkedAt": "2026-06-01T19:45:52.914Z"
}
},
{
@@ -3879,7 +4516,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -3889,7 +4527,7 @@
"server": null,
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.866Z"
+ "checkedAt": "2026-06-01T19:45:52.991Z"
}
},
{
@@ -3913,7 +4551,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/wallpaperexports.json",
"port": 10039,
"siteEmail": "info@wallpaperexports.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#9c6b30",
+ "bg": "#16120a",
+ "bgLight": "#f6f1e7",
+ "ink": "#f1ead9",
+ "inkLight": "#211c12",
+ "rule": "#d6c9ad",
+ "serif": "Georgia,'Times New Roman',serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "sand",
+ "font": "georgia"
+ }
},
"live": {
"state": "live",
@@ -3922,7 +4572,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.872Z"
+ "checkedAt": "2026-06-01T19:45:53.000Z"
}
},
{
@@ -3946,7 +4596,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/wallpaperfromthe80s.json",
"port": 10040,
"siteEmail": "info@wallpaperfromthe80s.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#6a3a7a",
+ "bg": "#0e0a10",
+ "bgLight": "#f3eff3",
+ "ink": "#ece4ee",
+ "inkLight": "#1a131c",
+ "rule": "#cdc1d0",
+ "serif": "'Bodoni Moda',Didot,Georgia,serif",
+ "sans": "-apple-system,'Helvetica Neue',Arial,sans-serif",
+ "palette": "plum",
+ "font": "bodoni"
+ }
},
"live": {
"state": "live",
@@ -3955,7 +4617,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:43.070Z"
+ "checkedAt": "2026-06-01T19:45:53.047Z"
}
},
{
@@ -3981,7 +4643,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -3991,7 +4654,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.902Z"
+ "checkedAt": "2026-06-01T19:45:53.142Z"
}
},
{
@@ -4017,7 +4680,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -4027,7 +4691,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:43.131Z"
+ "checkedAt": "2026-06-01T19:45:53.142Z"
}
},
{
@@ -4051,7 +4715,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/wallpaperny.json",
"port": 10041,
"siteEmail": "info@wallpaperny.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#444440",
+ "bg": "#080807",
+ "bgLight": "#f1f1f0",
+ "ink": "#ededec",
+ "inkLight": "#121211",
+ "rule": "#c8c8c5",
+ "serif": "'Bodoni Moda',Didot,Georgia,serif",
+ "sans": "-apple-system,'Helvetica Neue',Arial,sans-serif",
+ "palette": "ink",
+ "font": "bodoni"
+ }
},
"live": {
"state": "live",
@@ -4060,7 +4736,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:43.011Z"
+ "checkedAt": "2026-06-01T19:45:53.200Z"
}
},
{
@@ -4084,7 +4760,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/wallpaperpurchasing.json",
"port": 10042,
"siteEmail": "info@wallpaperpurchasing.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#3a5f8a",
+ "bg": "#0c0e11",
+ "bgLight": "#eef0f2",
+ "ink": "#e8eaee",
+ "inkLight": "#161a1e",
+ "rule": "#c4cad0",
+ "serif": "Georgia,'Times New Roman',serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "slate",
+ "font": "georgia"
+ }
},
"live": {
"state": "live",
@@ -4093,7 +4781,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:43.014Z"
+ "checkedAt": "2026-06-01T19:45:53.269Z"
}
},
{
@@ -4119,7 +4807,8 @@
"hasServer": true,
"hasSiteConfig": true,
"domainInferred": false,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -4129,7 +4818,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:42.367Z"
+ "checkedAt": "2026-06-01T19:45:53.207Z"
}
},
{
@@ -4155,7 +4844,8 @@
"hasServer": true,
"hasSiteConfig": false,
"domainInferred": true,
- "port": null
+ "port": null,
+ "theme": null
},
"manifest": null,
"live": {
@@ -4165,7 +4855,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:43.074Z"
+ "checkedAt": "2026-06-01T19:45:53.323Z"
}
},
{
@@ -4189,7 +4879,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/wallpaperweekly.json",
"port": 10043,
"siteEmail": "info@wallpaperweekly.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#7d3c00",
+ "bg": "#14110d",
+ "bgLight": "#faf7f2",
+ "ink": "#f3efe8",
+ "inkLight": "#1a1714",
+ "rule": "#d8cec0",
+ "serif": "'Playfair Display',Georgia,serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "ivory",
+ "font": "playfair"
+ }
},
"live": {
"state": "live",
@@ -4198,7 +4900,7 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:43.162Z"
+ "checkedAt": "2026-06-01T19:45:53.442Z"
}
},
{
@@ -4222,7 +4924,19 @@
"configPath": "/Users/stevestudio2/Projects/dw-domain-fleet/sites/wc01wallcoverings.json",
"port": 10044,
"siteEmail": "info@wc01wallcoverings.com",
- "hasLocalDir": false
+ "hasLocalDir": false,
+ "theme": {
+ "accent": "#3a5f8a",
+ "bg": "#0c0e11",
+ "bgLight": "#eef0f2",
+ "ink": "#e8eaee",
+ "inkLight": "#161a1e",
+ "rule": "#c4cad0",
+ "serif": "Georgia,'Times New Roman',serif",
+ "sans": "-apple-system,'Inter',system-ui,sans-serif",
+ "palette": "slate",
+ "font": "georgia"
+ }
},
"live": {
"state": "live",
@@ -4231,12 +4945,12 @@
"server": "nginx",
"redirectedOffDomain": null,
"scheme": "https",
- "checkedAt": "2026-06-01T19:19:43.269Z"
+ "checkedAt": "2026-06-01T19:45:53.465Z"
}
}
],
"probeSummary": {
- "probedAt": "2026-06-01T19:19:43.366Z",
+ "probedAt": "2026-06-01T19:45:53.487Z",
"timeoutMs": 8000,
"tally": {
"live": 119
diff --git a/viewer/index.html b/viewer/index.html
new file mode 100644
index 0000000..a8a121c
--- /dev/null
+++ b/viewer/index.html
@@ -0,0 +1,137 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>DW Fleet — Live Registry</title>
+<style>
+ :root{--bg:#0e0f12;--panel:#16181d;--ink:#e8e6e1;--muted:#8b8f98;--rule:#272a31;--accent:#9c7a4d;--cols:5}
+ *{box-sizing:border-box;margin:0;padding:0}
+ body{background:var(--bg);color:var(--ink);font-family:'Inter',system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}
+ header{position:sticky;top:0;z-index:5;background:rgba(14,15,18,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--rule);padding:16px 24px}
+ .htop{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
+ h1{font-family:'Cormorant Garamond',Georgia,serif;font-weight:600;font-size:26px;letter-spacing:.04em}
+ .sub{color:var(--muted);font-size:13px}
+ .controls{display:flex;gap:18px;align-items:center;margin-top:12px;flex-wrap:wrap}
+ .ctl{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}
+ select,input[type=range],input[type=search]{background:var(--panel);color:var(--ink);border:1px solid var(--rule);border-radius:6px;padding:6px 9px;font-size:12px;font-family:inherit}
+ input[type=search]{min-width:200px}
+ button{background:var(--accent);color:#1a1a1a;border:0;border-radius:6px;padding:7px 13px;font-size:12px;font-weight:600;cursor:pointer}
+ .stat{display:inline-flex;gap:5px;align-items:center}
+ .dot{width:8px;height:8px;border-radius:50%;display:inline-block}
+ .grid{display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:14px;padding:20px 24px}
+ .card{background:var(--panel);border:1px solid var(--rule);border-radius:10px;overflow:hidden;cursor:pointer;transition:transform .12s,border-color .12s;text-decoration:none;color:inherit;display:flex;flex-direction:column}
+ .card:hover{transform:translateY(-2px);border-color:var(--accent)}
+ .accentbar{height:5px}
+ .thumb{aspect-ratio:16/9;background:#0a0b0d center/cover no-repeat;border-bottom:1px solid var(--rule);position:relative;display:flex;align-items:center;justify-content:center}
+ .thumb .ph{font-family:'Cormorant Garamond',serif;font-size:22px;color:var(--muted);letter-spacing:.1em}
+ .body{padding:11px 12px 13px;display:flex;flex-direction:column;gap:6px;flex:1}
+ .dom{font-size:13px;font-weight:600;word-break:break-all;line-height:1.25}
+ .nm{font-size:11px;color:var(--muted)}
+ .badges{display:flex;flex-wrap:wrap;gap:5px;margin-top:auto;padding-top:6px}
+ .b{font-size:9px;letter-spacing:.04em;text-transform:uppercase;padding:2px 6px;border-radius:4px;border:1px solid var(--rule);color:var(--muted)}
+ .b.live{color:#4ade80;border-color:#4ade8044}.b.parked{color:#fbbf24;border-color:#fbbf2444}.b.down{color:#f87171;border-color:#f8717144}
+ .b.local{color:#7dd3fc;border-color:#7dd3fc44}.b.manifest{color:#c4b5fd;border-color:#c4b5fd44}
+ .b.canon{color:#fcd34d;border-color:#fcd34d55}.b.redir{color:#fb923c;border-color:#fb923c55}
+ .count{font-size:12px;color:var(--muted);margin-left:auto}
+</style>
+</head>
+<body>
+<header>
+ <div class="htop">
+ <h1>Designer Wallcoverings — Live Fleet</h1>
+ <span class="sub" id="summary">loading…</span>
+ <span class="count" id="count"></span>
+ </div>
+ <div class="controls">
+ <div class="ctl">Sort
+ <select id="sort">
+ <option value="domain">Domain A→Z</option>
+ <option value="status">Live status</option>
+ <option value="serving">Serving mode</option>
+ <option value="fleet">Fleet</option>
+ <option value="hue">Accent hue</option>
+ </select>
+ </div>
+ <div class="ctl">Density <input type="range" id="density" min="3" max="8" value="5"></div>
+ <div class="ctl"><input type="search" id="q" placeholder="filter domains…"></div>
+ <button id="reprobe">↻ Re-probe live</button>
+ </div>
+</header>
+<div class="grid" id="grid"></div>
+
+<script>
+const $ = s => document.querySelector(s);
+let SITES = [];
+const hueOf = hex => { if(!/^#?[0-9a-f]{6}$/i.test(hex||''))return 999; const n=parseInt(hex.replace('#',''),16); const r=(n>>16&255)/255,g=(n>>8&255)/255,b=(n&255)/255; const mx=Math.max(r,g,b),mn=Math.min(r,g,b),d=mx-mn; let h=0; if(d){ if(mx===r)h=((g-b)/d)%6; else if(mx===g)h=(b-r)/d+2; else h=(r-g)/d+4; } return Math.round(h*60+360)%360; };
+const accentOf = s => (s.local&&s.local.port?null:null) || (s.manifest&&s.manifest.theme&&s.manifest.theme.accent) || (s.local&&s.local.theme&&s.local.theme.accent) || '#9c7a4d';
+
+function render(){
+ const q = $('#q').value.trim().toLowerCase();
+ const sort = $('#sort').value;
+ let rows = SITES.filter(s => !q || s.domain.includes(q) || (s.siteName||'').toLowerCase().includes(q));
+ const cmp = {
+ domain:(a,b)=>a.domain.localeCompare(b.domain),
+ status:(a,b)=>(a.live?.state||'z').localeCompare(b.live?.state||'z')||a.domain.localeCompare(b.domain),
+ serving:(a,b)=>(a.servingModes?.[0]||'').localeCompare(b.servingModes?.[0]||'')||a.domain.localeCompare(b.domain),
+ fleet:(a,b)=>(a.fleets?.[0]||'').localeCompare(b.fleets?.[0]||'')||a.domain.localeCompare(b.domain),
+ hue:(a,b)=>hueOf(a._accent)-hueOf(b._accent),
+ }[sort];
+ rows.sort(cmp);
+ $('#count').textContent = rows.length + ' shown';
+ const g = $('#grid'); g.innerHTML = '';
+ for(const s of rows){
+ const a = document.createElement('a');
+ a.className='card'; a.href='https://'+s.domain; a.target='_blank'; a.rel='noopener noreferrer';
+ const st = s.live?.state||'?';
+ const stClass = st==='live'?'live':st==='parked'?'parked':(st==='unreachable'||st==='timeout'||st==='error')?'down':'';
+ const serving = (s.servingModes||[]).map(m=>m==='standalone-node'?'local':'manifest');
+ const redir = s.shouldRedirectTo ? '<span class="b redir">→ '+s.shouldRedirectTo.replace(/\\.com$/,'')+'</span>' : '';
+ const canon = (s.isCanonical) ? '<span class="b canon">canonical</span>' : '';
+ a.innerHTML =
+ '<div class="accentbar" style="background:'+s._accent+'"></div>'+
+ '<div class="thumb" data-domain="'+s.domain+'" style="background-color:'+s._accent+'22"><div class="ph">'+(s.siteName||s.domain).slice(0,18)+'</div></div>'+
+ '<div class="body">'+
+ '<div class="dom">'+s.domain+'</div>'+
+ '<div class="nm">'+(s.siteName||'')+'</div>'+
+ '<div class="badges">'+
+ '<span class="b '+stClass+'"><span class="dot" style="background:currentColor"></span>'+st+'</span>'+
+ serving.map(m=>'<span class="b '+m+'">'+m+'</span>').join('')+
+ canon+redir+
+ '</div>'+
+ '</div>';
+ g.appendChild(a);
+ }
+ lazyHeroes();
+}
+
+let io;
+function lazyHeroes(){
+ if(io) io.disconnect();
+ io = new IntersectionObserver((ents)=>{
+ for(const e of ents){ if(!e.isIntersecting) continue; const el=e.target; io.unobserve(el);
+ const d=el.dataset.domain;
+ fetch('/api/hero?domain='+encodeURIComponent(d)).then(r=>r.json()).then(j=>{
+ if(j.image){ const img=new Image(); img.onload=()=>{ el.style.backgroundImage='url('+j.image+')'; const ph=el.querySelector('.ph'); if(ph)ph.style.display='none'; }; img.src=j.image; }
+ }).catch(()=>{});
+ }
+ },{rootMargin:'300px'});
+ document.querySelectorAll('.thumb').forEach(t=>io.observe(t));
+}
+
+async function load(){
+ const r = await fetch('/api/registry'); const reg = await r.json();
+ SITES = (reg.sites||[]).map(s=>({...s, _accent: ((s.manifest&&s.manifest.theme&&s.manifest.theme.accent)||(s.local&&s.local.theme&&s.local.theme.accent)||'#9c7a4d')}));
+ const sm = reg.summary||{}; const tally = reg.probeSummary?.tally||{};
+ $('#summary').textContent = (sm.totalDomains||SITES.length)+' domains · '+(sm.localMicrosites||0)+' local + '+(sm.manifestDomains||0)+' manifest · '+(tally.live||0)+' live'+(reg.probeSummary?' · probed '+new Date(reg.probeSummary.probedAt).toLocaleString():'');
+ render();
+}
+$('#sort').onchange=render; $('#q').oninput=render;
+$('#density').oninput=e=>document.documentElement.style.setProperty('--cols', e.target.value);
+// persist controls
+for(const id of ['sort','density']){ const el=$('#'+id); const k='dwfleet-'+id; if(localStorage[k]){ el.value=localStorage[k]; if(id==='density')document.documentElement.style.setProperty('--cols',el.value);} el.addEventListener('change',()=>localStorage[k]=el.value); el.addEventListener('input',()=>localStorage[k]=el.value); }
+$('#reprobe').onclick=async()=>{ const b=$('#reprobe'); b.textContent='probing…'; b.disabled=true; try{ await fetch('/api/reprobe',{method:'POST'}); await load(); }finally{ b.textContent='↻ Re-probe live'; b.disabled=false; } };
+load();
+</script>
+</body>
+</html>
diff --git a/viewer/server.mjs b/viewer/server.mjs
new file mode 100644
index 0000000..a2cf688
--- /dev/null
+++ b/viewer/server.mjs
@@ -0,0 +1,67 @@
+#!/usr/bin/env node
+// Live DW fleet registry viewer — zero dependencies (node:http + built-in fetch).
+// node viewer/server.mjs # serves on :9774
+// Reads ../dw-fleet-registry.json fresh on each request. Proxies each site's live
+// og:image as a card thumbnail (so the grid shows LIVE data, not snapshots), and
+// can kick a re-probe.
+import http from 'node:http';
+import fs from 'node:fs';
+import os from 'node:os';
+import path from 'node:path';
+import { spawn } from 'node:child_process';
+
+const DIR = path.dirname(new URL(import.meta.url).pathname);
+const REG = path.join(DIR, '..', 'dw-fleet-registry.json');
+const PORT = process.env.PORT || 9774;
+const heroCache = new Map(); // domain -> {image, at}
+
+function send(res, code, type, body) {
+ res.writeHead(code, { 'Content-Type': type, 'Cache-Control': 'no-store' });
+ res.end(body);
+}
+
+async function liveHero(domain) {
+ const hit = heroCache.get(domain);
+ if (hit) return hit.image;
+ let image = null;
+ try {
+ const ctrl = new AbortController();
+ const t = setTimeout(() => ctrl.abort(), 6000);
+ const r = await fetch('https://' + domain + '/', { signal: ctrl.signal, headers: { 'User-Agent': 'dw-fleet-viewer/1.0' } });
+ clearTimeout(t);
+ const html = (await r.text()).slice(0, 60000);
+ const og = html.match(/<meta[^>]+property=["']og:image["'][^>]+content=["']([^"']+)["']/i)
+ || html.match(/<meta[^>]+content=["']([^"']+)["'][^>]+property=["']og:image["']/i);
+ if (og) image = og[1];
+ else {
+ const img = html.match(/<img[^>]+src=["']([^"']+\.(?:jpg|jpeg|png|webp|avif)[^"']*)["']/i);
+ if (img) image = img[1];
+ }
+ if (image && image.startsWith('/')) image = 'https://' + domain + image;
+ } catch { /* unreachable / timeout */ }
+ heroCache.set(domain, { image, at: Date.now() });
+ return image;
+}
+
+const server = http.createServer(async (req, res) => {
+ const u = new URL(req.url, 'http://localhost');
+ if (u.pathname === '/') return send(res, 200, 'text/html; charset=utf-8', fs.readFileSync(path.join(DIR, 'index.html')));
+ if (u.pathname === '/api/registry') {
+ try { return send(res, 200, 'application/json', fs.readFileSync(REG)); }
+ catch { return send(res, 500, 'application/json', '{"error":"registry not found — run build-registry.mjs"}'); }
+ }
+ if (u.pathname === '/api/hero') {
+ const d = u.searchParams.get('domain') || '';
+ if (!/^[a-z0-9.-]+$/i.test(d)) return send(res, 400, 'application/json', '{"image":null}');
+ return send(res, 200, 'application/json', JSON.stringify({ image: await liveHero(d) }));
+ }
+ if (u.pathname === '/api/reprobe' && req.method === 'POST') {
+ const p = spawn('node', [path.join(DIR, '..', 'probe.mjs')], { cwd: path.join(DIR, '..') });
+ let out = '';
+ p.stderr.on('data', d => out += d); p.stdout.on('data', d => out += d);
+ p.on('close', code => send(res, 200, 'application/json', JSON.stringify({ ok: code === 0, log: out.slice(-2000) })));
+ return;
+ }
+ send(res, 404, 'text/plain', 'not found');
+});
+server.listen(PORT, () => console.log(`DW fleet viewer → http://localhost:${PORT}`));
← e71047d hybrid brand demo: 3 per-site boards themed from real style-
·
back to Dw Fleet Registry
·
live-data boards: scrape theme tokens from served CSS + embe 41cdb66 →