[object Object]

← back to Dw Marketing Reels

Majilite flip book: real walls+furniture room renders in verso (24x nano-banana)

105bde394226c4837d5ac1c208b2681bfe23bd83 · 2026-08-10 11:53:30 -0700 · Steve Abrams

Files touched

Diff

commit 105bde394226c4837d5ac1c208b2681bfe23bd83
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Mon Aug 10 11:53:30 2026 -0700

    Majilite flip book: real walls+furniture room renders in verso (24x nano-banana)
---
 data/majilite-metallics.json                       |  96 ++++++++++-----------
 flipbooks/majilite-metallics/assets/roomgen/r0.jpg | Bin 0 -> 188958 bytes
 flipbooks/majilite-metallics/assets/roomgen/r1.jpg | Bin 0 -> 109807 bytes
 .../majilite-metallics/assets/roomgen/r10.jpg      | Bin 0 -> 107231 bytes
 .../majilite-metallics/assets/roomgen/r11.jpg      | Bin 0 -> 88359 bytes
 .../majilite-metallics/assets/roomgen/r12.jpg      | Bin 0 -> 82878 bytes
 .../majilite-metallics/assets/roomgen/r13.jpg      | Bin 0 -> 93224 bytes
 .../majilite-metallics/assets/roomgen/r14.jpg      | Bin 0 -> 82233 bytes
 .../majilite-metallics/assets/roomgen/r15.jpg      | Bin 0 -> 78922 bytes
 .../majilite-metallics/assets/roomgen/r16.jpg      | Bin 0 -> 97448 bytes
 .../majilite-metallics/assets/roomgen/r17.jpg      | Bin 0 -> 100962 bytes
 .../majilite-metallics/assets/roomgen/r18.jpg      | Bin 0 -> 104802 bytes
 .../majilite-metallics/assets/roomgen/r19.jpg      | Bin 0 -> 101233 bytes
 flipbooks/majilite-metallics/assets/roomgen/r2.jpg | Bin 0 -> 96016 bytes
 .../majilite-metallics/assets/roomgen/r20.jpg      | Bin 0 -> 86829 bytes
 .../majilite-metallics/assets/roomgen/r21.jpg      | Bin 0 -> 150644 bytes
 .../majilite-metallics/assets/roomgen/r22.jpg      | Bin 0 -> 101642 bytes
 .../majilite-metallics/assets/roomgen/r23.jpg      | Bin 0 -> 121500 bytes
 flipbooks/majilite-metallics/assets/roomgen/r3.jpg | Bin 0 -> 150910 bytes
 flipbooks/majilite-metallics/assets/roomgen/r4.jpg | Bin 0 -> 121699 bytes
 flipbooks/majilite-metallics/assets/roomgen/r5.jpg | Bin 0 -> 104005 bytes
 flipbooks/majilite-metallics/assets/roomgen/r6.jpg | Bin 0 -> 119791 bytes
 flipbooks/majilite-metallics/assets/roomgen/r7.jpg | Bin 0 -> 166204 bytes
 flipbooks/majilite-metallics/assets/roomgen/r8.jpg | Bin 0 -> 146031 bytes
 flipbooks/majilite-metallics/assets/roomgen/r9.jpg | Bin 0 -> 128854 bytes
 flipbooks/majilite-metallics/gen-rooms.py          |  83 ++++++++++++++++++
 flipbooks/majilite-metallics/index.html            |  48 +++++------
 flipbooks/majilite-metallics/roomsrc/r1.jpg        | Bin 0 -> 345594 bytes
 flipbooks/majilite-metallics/roomsrc/r2.jpg        | Bin 0 -> 297017 bytes
 flipbooks/majilite-metallics/roomsrc/r3.jpg        | Bin 0 -> 334986 bytes
 flipbooks/majilite-metallics/roomsrc/r4.jpg        | Bin 0 -> 307753 bytes
 flipbooks/majilite-metallics/roomsrc/r5.jpg        | Bin 0 -> 374022 bytes
 public/collections/majilite-metallics-banner.jpg   | Bin 1367223 -> 188958 bytes
 public/collections/majilite-metallics-poster.jpg   | Bin 1427192 -> 1688007 bytes
 public/collections/majilite-metallics.html         |   2 +-
 35 files changed, 156 insertions(+), 73 deletions(-)

diff --git a/data/majilite-metallics.json b/data/majilite-metallics.json
index cc1aee4..fa93053 100644
--- a/data/majilite-metallics.json
+++ b/data/majilite-metallics.json
@@ -4,8 +4,8 @@
     "handle": "majilite-stature-rose-gold",
     "url": "https://www.designerwallcoverings.com/products/majilite-stature-rose-gold",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600123.png?v=1786382271",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600123.png?v=1786382271",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r0.jpg",
+    "has_room": true,
     "chapter": "golds"
   },
   {
@@ -13,8 +13,8 @@
     "handle": "majilite-attache-rose-gold",
     "url": "https://www.designerwallcoverings.com/products/majilite-attache-rose-gold",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600156.png?v=1786382322",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600156.png?v=1786382322",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r1.jpg",
+    "has_room": true,
     "chapter": "golds"
   },
   {
@@ -22,8 +22,8 @@
     "handle": "majilite-hive-antique-gold",
     "url": "https://www.designerwallcoverings.com/products/majilite-hive-antique-gold",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600111.png?v=1786382254",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600111.png?v=1786382254",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r2.jpg",
+    "has_room": true,
     "chapter": "golds"
   },
   {
@@ -31,8 +31,8 @@
     "handle": "majilite-nuance-gold-leaf",
     "url": "https://www.designerwallcoverings.com/products/majilite-nuance-gold-leaf",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600073.png?v=1786382201",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600073.png?v=1786382201",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r3.jpg",
+    "has_room": true,
     "chapter": "golds"
   },
   {
@@ -40,8 +40,8 @@
     "handle": "majilite-brushed-finesse-champagne",
     "url": "https://www.designerwallcoverings.com/products/majilite-brushed-finesse-champagne",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600130.png?v=1786382280",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600130.png?v=1786382280",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r4.jpg",
+    "has_room": true,
     "chapter": "golds"
   },
   {
@@ -49,8 +49,8 @@
     "handle": "majilite-apollo-chardonnay",
     "url": "https://www.designerwallcoverings.com/products/majilite-apollo-chardonnay",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600108.png?v=1786382250",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600108.png?v=1786382250",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r5.jpg",
+    "has_room": true,
     "chapter": "golds"
   },
   {
@@ -58,8 +58,8 @@
     "handle": "majilite-apollo-silver-icon",
     "url": "https://www.designerwallcoverings.com/products/majilite-apollo-silver-icon",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600002.png?v=1786382087",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600002.png?v=1786382087",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r6.jpg",
+    "has_room": true,
     "chapter": "silvers"
   },
   {
@@ -67,8 +67,8 @@
     "handle": "majilite-metallic-paragon-silver",
     "url": "https://www.designerwallcoverings.com/products/majilite-metallic-paragon-silver",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600004.png?v=1786382091",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600004.png?v=1786382091",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r7.jpg",
+    "has_room": true,
     "chapter": "silvers"
   },
   {
@@ -76,8 +76,8 @@
     "handle": "majilite-brushed-finesse-stainless-steel",
     "url": "https://www.designerwallcoverings.com/products/majilite-brushed-finesse-stainless-steel",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600036.png?v=1786382149",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600036.png?v=1786382149",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r8.jpg",
+    "has_room": true,
     "chapter": "silvers"
   },
   {
@@ -85,8 +85,8 @@
     "handle": "majilite-nuance-platinum",
     "url": "https://www.designerwallcoverings.com/products/majilite-nuance-platinum",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600059.png?v=1786382180",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600059.png?v=1786382180",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r9.jpg",
+    "has_room": true,
     "chapter": "silvers"
   },
   {
@@ -94,8 +94,8 @@
     "handle": "majilite-charm-ii-platinum",
     "url": "https://www.designerwallcoverings.com/products/majilite-charm-ii-platinum",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600075.png?v=1786382204",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600075.png?v=1786382204",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r10.jpg",
+    "has_room": true,
     "chapter": "silvers"
   },
   {
@@ -103,8 +103,8 @@
     "handle": "majilite-reflection-aluminum",
     "url": "https://www.designerwallcoverings.com/products/majilite-reflection-aluminum",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600007.png?v=1786382098",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600007.png?v=1786382098",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r11.jpg",
+    "has_room": true,
     "chapter": "silvers"
   },
   {
@@ -112,8 +112,8 @@
     "handle": "majilite-legacy-pearl-gelato",
     "url": "https://www.designerwallcoverings.com/products/majilite-legacy-pearl-gelato",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600074.png?v=1786382203",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600074.png?v=1786382203",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r12.jpg",
+    "has_room": true,
     "chapter": "pearls"
   },
   {
@@ -121,8 +121,8 @@
     "handle": "majilite-celestial-pearl-gelato",
     "url": "https://www.designerwallcoverings.com/products/majilite-celestial-pearl-gelato",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600102.png?v=1786382242",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600102.png?v=1786382242",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r13.jpg",
+    "has_room": true,
     "chapter": "pearls"
   },
   {
@@ -130,8 +130,8 @@
     "handle": "majilite-deco-white-pearl",
     "url": "https://www.designerwallcoverings.com/products/majilite-deco-white-pearl",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600065.png?v=1786382190",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600065.png?v=1786382190",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r14.jpg",
+    "has_room": true,
     "chapter": "pearls"
   },
   {
@@ -139,8 +139,8 @@
     "handle": "majilite-shimmer-polar-white",
     "url": "https://www.designerwallcoverings.com/products/majilite-shimmer-polar-white",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600045.png?v=1786382161",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600045.png?v=1786382161",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r15.jpg",
+    "has_room": true,
     "chapter": "pearls"
   },
   {
@@ -148,8 +148,8 @@
     "handle": "majilite-radiance-pearl-white",
     "url": "https://www.designerwallcoverings.com/products/majilite-radiance-pearl-white",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600048.png?v=1786382166",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600048.png?v=1786382166",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r16.jpg",
+    "has_room": true,
     "chapter": "pearls"
   },
   {
@@ -157,8 +157,8 @@
     "handle": "majilite-charm-featherbed",
     "url": "https://www.designerwallcoverings.com/products/majilite-charm-featherbed",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600066.png?v=1786382191",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600066.png?v=1786382191",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r17.jpg",
+    "has_room": true,
     "chapter": "pearls"
   },
   {
@@ -166,8 +166,8 @@
     "handle": "majilite-finesse-mercury",
     "url": "https://www.designerwallcoverings.com/products/majilite-finesse-mercury",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600011.png?v=1786382106",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600011.png?v=1786382106",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r18.jpg",
+    "has_room": true,
     "chapter": "smoke"
   },
   {
@@ -175,8 +175,8 @@
     "handle": "majilite-burnished-metal-mercury",
     "url": "https://www.designerwallcoverings.com/products/majilite-burnished-metal-mercury",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600147.png?v=1786382304",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600147.png?v=1786382304",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r19.jpg",
+    "has_room": true,
     "chapter": "smoke"
   },
   {
@@ -184,8 +184,8 @@
     "handle": "majilite-eclipse-fx-carbon",
     "url": "https://www.designerwallcoverings.com/products/majilite-eclipse-fx-carbon",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600032.png?v=1786382143",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600032.png?v=1786382143",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r20.jpg",
+    "has_room": true,
     "chapter": "smoke"
   },
   {
@@ -193,8 +193,8 @@
     "handle": "majilite-shimmer-charcoal",
     "url": "https://www.designerwallcoverings.com/products/majilite-shimmer-charcoal",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600037.png?v=1786382150",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600037.png?v=1786382150",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r21.jpg",
+    "has_room": true,
     "chapter": "smoke"
   },
   {
@@ -202,8 +202,8 @@
     "handle": "majilite-metallic-paragon-slate",
     "url": "https://www.designerwallcoverings.com/products/majilite-metallic-paragon-slate",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600155.png?v=1786382319",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600155.png?v=1786382319",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r22.jpg",
+    "has_room": true,
     "chapter": "smoke"
   },
   {
@@ -211,8 +211,8 @@
     "handle": "majilite-hammered-metal-midnight",
     "url": "https://www.designerwallcoverings.com/products/majilite-hammered-metal-midnight",
     "image": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600160.png?v=1786382327",
-    "room": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DWMJ-600160.png?v=1786382327",
-    "has_room": false,
+    "room": "/Users/macstudio3/Projects/dw-marketing-reels/flipbooks/majilite-metallics/assets/roomgen/r23.jpg",
+    "has_room": true,
     "chapter": "smoke"
   }
 ]
\ No newline at end of file
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r0.jpg b/flipbooks/majilite-metallics/assets/roomgen/r0.jpg
new file mode 100644
index 0000000..ed42cb2
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r0.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r1.jpg b/flipbooks/majilite-metallics/assets/roomgen/r1.jpg
new file mode 100644
index 0000000..7b7e243
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r1.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r10.jpg b/flipbooks/majilite-metallics/assets/roomgen/r10.jpg
new file mode 100644
index 0000000..e291e59
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r10.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r11.jpg b/flipbooks/majilite-metallics/assets/roomgen/r11.jpg
new file mode 100644
index 0000000..91ef442
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r11.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r12.jpg b/flipbooks/majilite-metallics/assets/roomgen/r12.jpg
new file mode 100644
index 0000000..0508fa2
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r12.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r13.jpg b/flipbooks/majilite-metallics/assets/roomgen/r13.jpg
new file mode 100644
index 0000000..1afec18
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r13.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r14.jpg b/flipbooks/majilite-metallics/assets/roomgen/r14.jpg
new file mode 100644
index 0000000..bd9733a
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r14.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r15.jpg b/flipbooks/majilite-metallics/assets/roomgen/r15.jpg
new file mode 100644
index 0000000..93d3cf0
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r15.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r16.jpg b/flipbooks/majilite-metallics/assets/roomgen/r16.jpg
new file mode 100644
index 0000000..ce67f61
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r16.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r17.jpg b/flipbooks/majilite-metallics/assets/roomgen/r17.jpg
new file mode 100644
index 0000000..9efb747
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r17.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r18.jpg b/flipbooks/majilite-metallics/assets/roomgen/r18.jpg
new file mode 100644
index 0000000..f8f4a2c
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r18.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r19.jpg b/flipbooks/majilite-metallics/assets/roomgen/r19.jpg
new file mode 100644
index 0000000..f6c5125
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r19.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r2.jpg b/flipbooks/majilite-metallics/assets/roomgen/r2.jpg
new file mode 100644
index 0000000..4a717fd
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r2.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r20.jpg b/flipbooks/majilite-metallics/assets/roomgen/r20.jpg
new file mode 100644
index 0000000..7add31e
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r20.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r21.jpg b/flipbooks/majilite-metallics/assets/roomgen/r21.jpg
new file mode 100644
index 0000000..1ed0e96
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r21.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r22.jpg b/flipbooks/majilite-metallics/assets/roomgen/r22.jpg
new file mode 100644
index 0000000..085adb0
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r22.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r23.jpg b/flipbooks/majilite-metallics/assets/roomgen/r23.jpg
new file mode 100644
index 0000000..6071cb5
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r23.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r3.jpg b/flipbooks/majilite-metallics/assets/roomgen/r3.jpg
new file mode 100644
index 0000000..e141145
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r3.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r4.jpg b/flipbooks/majilite-metallics/assets/roomgen/r4.jpg
new file mode 100644
index 0000000..b798563
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r4.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r5.jpg b/flipbooks/majilite-metallics/assets/roomgen/r5.jpg
new file mode 100644
index 0000000..810c8e5
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r5.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r6.jpg b/flipbooks/majilite-metallics/assets/roomgen/r6.jpg
new file mode 100644
index 0000000..d15b0f4
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r6.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r7.jpg b/flipbooks/majilite-metallics/assets/roomgen/r7.jpg
new file mode 100644
index 0000000..b966b53
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r7.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r8.jpg b/flipbooks/majilite-metallics/assets/roomgen/r8.jpg
new file mode 100644
index 0000000..07da5da
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r8.jpg differ
diff --git a/flipbooks/majilite-metallics/assets/roomgen/r9.jpg b/flipbooks/majilite-metallics/assets/roomgen/r9.jpg
new file mode 100644
index 0000000..3b223b2
Binary files /dev/null and b/flipbooks/majilite-metallics/assets/roomgen/r9.jpg differ
diff --git a/flipbooks/majilite-metallics/gen-rooms.py b/flipbooks/majilite-metallics/gen-rooms.py
new file mode 100644
index 0000000..a6d8386
--- /dev/null
+++ b/flipbooks/majilite-metallics/gen-rooms.py
@@ -0,0 +1,83 @@
+#!/usr/bin/env python3
+# Generate walls+furniture commercial renders for each Majilite metallic via Replicate nano-banana.
+import json, os, time, urllib.request, urllib.error, pathlib, re
+
+ROOT = pathlib.Path(__file__).resolve().parent
+DATA = ROOT.parent.parent / "data" / "majilite-metallics.json"
+OUT  = ROOT / "assets" / "roomgen"
+OUT.mkdir(parents=True, exist_ok=True)
+VERSION = "5bdc2c7cd642ae33611d8c33f79615f98ff02509ab8db9d8ec1cc6c36d378fba"
+
+def token():
+    for line in (pathlib.Path.home()/ "Projects/secrets-manager/.env").read_text().splitlines():
+        if line.startswith("REPLICATE_API_TOKEN="):
+            return line.split("=",1)[1].strip()
+    raise SystemExit("no replicate token")
+TOKEN = token()
+
+# room + furniture scene by chapter (two variants cycled per chapter for variety)
+SCENES = {
+  "golds":   [("an upscale hotel lobby","a pair of upholstered lounge chairs AND the reception feature wall behind them"),
+              ("a high-end restaurant dining room","a curved tufted banquette booth AND the full wall behind it")],
+  "silvers": [("an executive conference boardroom","the upholstered high-back boardroom chairs AND a full-height accent wall panel"),
+              ("a modern corporate office lounge","an upholstered sofa AND the feature wall behind it")],
+  "pearls":  [("a premium retail showroom","an upholstered display bench AND a feature wall"),
+              ("a bright, calm healthcare waiting room","the upholstered waiting chairs AND a wall panel")],
+  "smoke":   [("a moody fine-dining restaurant","a deep tufted banquette booth AND the dark wall behind it"),
+              ("a low-lit executive boardroom","the upholstered high-back chairs AND an accent wall")],
+}
+
+def prompt_for(title, room, furniture):
+    return (f"Photorealistic interior design photograph of {room}. Take the supplied swatch — a metallic "
+            f"faux-leather contract material called '{title}' — and apply its EXACT color, metallic sheen and "
+            f"texture to BOTH {furniture}. Contract-grade upholstery and wallcovering finish, realistic "
+            f"architectural lighting with soft reflections on the metallic surface, editorial design-magazine "
+            f"quality, shallow depth of field. No text, no logos, no watermark, no people.")
+
+def post(url, body):
+    req = urllib.request.Request(url, data=json.dumps(body).encode(),
+        headers={"Authorization": f"Bearer {TOKEN}", "Content-Type":"application/json"})
+    return json.load(urllib.request.urlopen(req, timeout=60))
+
+def get(url):
+    req = urllib.request.Request(url, headers={"Authorization": f"Bearer {TOKEN}"})
+    return json.load(urllib.request.urlopen(req, timeout=60))
+
+products = json.loads(DATA.read_text())
+per_chapter = {}
+ok = 0
+for i, p in enumerate(products):
+    ch = p.get("chapter","golds")
+    idx = per_chapter.get(ch,0); per_chapter[ch]=idx+1
+    room, furniture = SCENES.get(ch, SCENES["golds"])[idx % 2]
+    prm = prompt_for(p["title"], room, furniture)
+    swatch = p["image"]
+    dest = OUT / f"r{i}.jpg"
+    if dest.exists() and dest.stat().st_size > 20000:
+        print(f"[{i:02d}] cached {p['title']}"); ok+=1; continue
+    try:
+        pred = post("https://api.replicate.com/v1/predictions",
+            {"version": VERSION, "input": {"prompt": prm, "image_input":[swatch],
+             "aspect_ratio":"4:3", "output_format":"jpg"}})
+        purl = pred["urls"]["get"]
+        for _ in range(90):
+            time.sleep(2)
+            pred = get(purl)
+            if pred["status"] in ("succeeded","failed","canceled"): break
+        if pred["status"] != "succeeded":
+            print(f"[{i:02d}] FAIL {p['title']}: {pred.get('error') or pred['status']}"); continue
+        out = pred["output"]
+        img_url = out[0] if isinstance(out,list) else out
+        urllib.request.urlretrieve(img_url, dest)
+        ok += 1
+        print(f"[{i:02d}] ok  {p['title']:28s} [{ch}/{room[:24]}]")
+    except Exception as e:
+        print(f"[{i:02d}] ERR {p['title']}: {e}")
+
+# stamp local room paths + has_room into the data JSON
+for i, p in enumerate(products):
+    dest = OUT / f"r{i}.jpg"
+    if dest.exists() and dest.stat().st_size > 20000:
+        p["room"] = str(dest); p["has_room"] = True
+DATA.write_text(json.dumps(products, indent=2))
+print(f"\nDONE {ok}/{len(products)} rooms; est cost ${ok*0.039:.2f} (nano-banana @ ~$0.039/img)")
diff --git a/flipbooks/majilite-metallics/index.html b/flipbooks/majilite-metallics/index.html
index f3533c1..9a49d25 100644
--- a/flipbooks/majilite-metallics/index.html
+++ b/flipbooks/majilite-metallics/index.html
@@ -63,122 +63,122 @@
       <div class="verso">
         <div class="wordmark"><div class="wm">Designer Wallcoverings</div><div class="wsub">est. lookbook</div><div class="wr"></div></div>
         <div class="roomstack">
-      <div class="room fallback" id="room0">
+      <div class="room" id="room0">
         <img class="rimg" src="assets/room/r0.jpg" alt="Stature Rose Gold room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Stature Rose Gold</div><div class="rcol">Majilite Metallics · golds</div></div>
       </div>
-      <div class="room fallback" id="room1">
+      <div class="room" id="room1">
         <img class="rimg" src="assets/room/r1.jpg" alt="Attache Rose Gold room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Attache Rose Gold</div><div class="rcol">Majilite Metallics · golds</div></div>
       </div>
-      <div class="room fallback" id="room2">
+      <div class="room" id="room2">
         <img class="rimg" src="assets/room/r2.jpg" alt="Hive Antique Gold room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Hive Antique Gold</div><div class="rcol">Majilite Metallics · golds</div></div>
       </div>
-      <div class="room fallback" id="room3">
+      <div class="room" id="room3">
         <img class="rimg" src="assets/room/r3.jpg" alt="Nuance Gold Leaf room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Nuance Gold Leaf</div><div class="rcol">Majilite Metallics · golds</div></div>
       </div>
-      <div class="room fallback" id="room4">
+      <div class="room" id="room4">
         <img class="rimg" src="assets/room/r4.jpg" alt="Brushed Finesse Champagne room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Brushed Finesse Champagne</div><div class="rcol">Majilite Metallics · golds</div></div>
       </div>
-      <div class="room fallback" id="room5">
+      <div class="room" id="room5">
         <img class="rimg" src="assets/room/r5.jpg" alt="Apollo Chardonnay room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Apollo Chardonnay</div><div class="rcol">Majilite Metallics · golds</div></div>
       </div>
-      <div class="room fallback" id="room6">
+      <div class="room" id="room6">
         <img class="rimg" src="assets/room/r6.jpg" alt="Apollo Silver Icon room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Apollo Silver Icon</div><div class="rcol">Majilite Metallics · silvers</div></div>
       </div>
-      <div class="room fallback" id="room7">
+      <div class="room" id="room7">
         <img class="rimg" src="assets/room/r7.jpg" alt="Metallic Paragon Silver room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Metallic Paragon Silver</div><div class="rcol">Majilite Metallics · silvers</div></div>
       </div>
-      <div class="room fallback" id="room8">
+      <div class="room" id="room8">
         <img class="rimg" src="assets/room/r8.jpg" alt="Brushed Finesse Stainless Steel room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Brushed Finesse Stainless Steel</div><div class="rcol">Majilite Metallics · silvers</div></div>
       </div>
-      <div class="room fallback" id="room9">
+      <div class="room" id="room9">
         <img class="rimg" src="assets/room/r9.jpg" alt="Nuance Platinum room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Nuance Platinum</div><div class="rcol">Majilite Metallics · silvers</div></div>
       </div>
-      <div class="room fallback" id="room10">
+      <div class="room" id="room10">
         <img class="rimg" src="assets/room/r10.jpg" alt="Charm II Platinum room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Charm II Platinum</div><div class="rcol">Majilite Metallics · silvers</div></div>
       </div>
-      <div class="room fallback" id="room11">
+      <div class="room" id="room11">
         <img class="rimg" src="assets/room/r11.jpg" alt="Reflection Aluminum room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Reflection Aluminum</div><div class="rcol">Majilite Metallics · silvers</div></div>
       </div>
-      <div class="room fallback" id="room12">
+      <div class="room" id="room12">
         <img class="rimg" src="assets/room/r12.jpg" alt="Legacy Pearl Gelato room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Legacy Pearl Gelato</div><div class="rcol">Majilite Metallics · pearls</div></div>
       </div>
-      <div class="room fallback" id="room13">
+      <div class="room" id="room13">
         <img class="rimg" src="assets/room/r13.jpg" alt="Celestial Pearl Gelato room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Celestial Pearl Gelato</div><div class="rcol">Majilite Metallics · pearls</div></div>
       </div>
-      <div class="room fallback" id="room14">
+      <div class="room" id="room14">
         <img class="rimg" src="assets/room/r14.jpg" alt="Deco White Pearl room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Deco White Pearl</div><div class="rcol">Majilite Metallics · pearls</div></div>
       </div>
-      <div class="room fallback" id="room15">
+      <div class="room" id="room15">
         <img class="rimg" src="assets/room/r15.jpg" alt="Shimmer Polar White room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Shimmer Polar White</div><div class="rcol">Majilite Metallics · pearls</div></div>
       </div>
-      <div class="room fallback" id="room16">
+      <div class="room" id="room16">
         <img class="rimg" src="assets/room/r16.jpg" alt="Radiance Pearl White room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Radiance Pearl White</div><div class="rcol">Majilite Metallics · pearls</div></div>
       </div>
-      <div class="room fallback" id="room17">
+      <div class="room" id="room17">
         <img class="rimg" src="assets/room/r17.jpg" alt="Charm Featherbed room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Charm Featherbed</div><div class="rcol">Majilite Metallics · pearls</div></div>
       </div>
-      <div class="room fallback" id="room18">
+      <div class="room" id="room18">
         <img class="rimg" src="assets/room/r18.jpg" alt="Finesse Mercury room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Finesse Mercury</div><div class="rcol">Majilite Metallics · smoke</div></div>
       </div>
-      <div class="room fallback" id="room19">
+      <div class="room" id="room19">
         <img class="rimg" src="assets/room/r19.jpg" alt="Burnished Metal Mercury room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Burnished Metal Mercury</div><div class="rcol">Majilite Metallics · smoke</div></div>
       </div>
-      <div class="room fallback" id="room20">
+      <div class="room" id="room20">
         <img class="rimg" src="assets/room/r20.jpg" alt="Eclipse FX Carbon room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Eclipse FX Carbon</div><div class="rcol">Majilite Metallics · smoke</div></div>
       </div>
-      <div class="room fallback" id="room21">
+      <div class="room" id="room21">
         <img class="rimg" src="assets/room/r21.jpg" alt="Shimmer Charcoal room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Shimmer Charcoal</div><div class="rcol">Majilite Metallics · smoke</div></div>
       </div>
-      <div class="room fallback" id="room22">
+      <div class="room" id="room22">
         <img class="rimg" src="assets/room/r22.jpg" alt="Metallic Paragon Slate room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Metallic Paragon Slate</div><div class="rcol">Majilite Metallics · smoke</div></div>
       </div>
-      <div class="room fallback" id="room23">
+      <div class="room" id="room23">
         <img class="rimg" src="assets/room/r23.jpg" alt="Hammered Metal Midnight room" />
         <div class="rtint"></div>
         <div class="rcap"><div class="rpat">Hammered Metal Midnight</div><div class="rcol">Majilite Metallics · smoke</div></div>
diff --git a/flipbooks/majilite-metallics/roomsrc/r1.jpg b/flipbooks/majilite-metallics/roomsrc/r1.jpg
new file mode 100644
index 0000000..1a0ff50
Binary files /dev/null and b/flipbooks/majilite-metallics/roomsrc/r1.jpg differ
diff --git a/flipbooks/majilite-metallics/roomsrc/r2.jpg b/flipbooks/majilite-metallics/roomsrc/r2.jpg
new file mode 100644
index 0000000..d63037b
Binary files /dev/null and b/flipbooks/majilite-metallics/roomsrc/r2.jpg differ
diff --git a/flipbooks/majilite-metallics/roomsrc/r3.jpg b/flipbooks/majilite-metallics/roomsrc/r3.jpg
new file mode 100644
index 0000000..4da8b3d
Binary files /dev/null and b/flipbooks/majilite-metallics/roomsrc/r3.jpg differ
diff --git a/flipbooks/majilite-metallics/roomsrc/r4.jpg b/flipbooks/majilite-metallics/roomsrc/r4.jpg
new file mode 100644
index 0000000..69e56d0
Binary files /dev/null and b/flipbooks/majilite-metallics/roomsrc/r4.jpg differ
diff --git a/flipbooks/majilite-metallics/roomsrc/r5.jpg b/flipbooks/majilite-metallics/roomsrc/r5.jpg
new file mode 100644
index 0000000..ee84542
Binary files /dev/null and b/flipbooks/majilite-metallics/roomsrc/r5.jpg differ
diff --git a/public/collections/majilite-metallics-banner.jpg b/public/collections/majilite-metallics-banner.jpg
index 220e45d..ed42cb2 100644
Binary files a/public/collections/majilite-metallics-banner.jpg and b/public/collections/majilite-metallics-banner.jpg differ
diff --git a/public/collections/majilite-metallics-poster.jpg b/public/collections/majilite-metallics-poster.jpg
index ff971ed..2173214 100644
Binary files a/public/collections/majilite-metallics-poster.jpg and b/public/collections/majilite-metallics-poster.jpg differ
diff --git a/public/collections/majilite-metallics.html b/public/collections/majilite-metallics.html
index b07d5d2..687aae7 100644
--- a/public/collections/majilite-metallics.html
+++ b/public/collections/majilite-metallics.html
@@ -51,6 +51,6 @@
       sd.addEventListener('click',function(){v.muted=!v.muted;if(!v.muted&&v.volume===0)v.volume=1;paint();});
       v.addEventListener('volumechange',paint);paint();
     })();</script>
-  <div class="cta"><a href="https://www.designerwallcoverings.com/collections/all/majilite">Shop the collection →</a></div>
+  <div class="cta"><a href="https://www.designerwallcoverings.com/collections/majilite">Shop the collection →</a></div>
   <footer><div class="mark">Designer Wallcoverings</div><a href="https://designerwallcoverings.com">designerwallcoverings.com →</a></footer>
 </body></html>
\ No newline at end of file

← 692459d reels: 15/30s runtime + open on a product image (no blank IG  ·  back to Dw Marketing Reels  ·  Majilite flip book: real Replicate commercial rooms on verso 305a06c →