Panolux
Wood panels, kitchens and dressings from Casablanca: a dark-first, 28-page French catalogue on Astro 7 that maps and audits its own SEO on every build.


Two catalogues, one showroom, one site that audits itself.
PANOLUX® sells two very different things from one showroom in Dar Bouazza, Casablanca. Architects, joiners and designers come for a technical range of decorative wood panels: MDF and moisture-resistant MDF, HDF, melamine and Egger decors, blockboard, plywood, High Gloss and Super Mat, HPL and compact laminate, acoustic and slatted wall panels, and exterior cladding, with cutting and machining to size. Homeowners come for made-to-measure kitchens, dressings, wardrobes and bathroom fittings built from those same panels. The brief was a French-language site that covers the real search demand on both sides (MDF prices, moisture-resistant boards, Egger, HPL, fitted kitchens, dressings, cladding) and turns visits into quote requests, without thin copies and without publishing a price list.
The starting point was measurable. A site audit of panolux.ma exported on 9 July 2026 crawled 13 pages and flagged 26 redirecting URLs, 12 pages reachable through a single internal link, no sitemap.xml, no llms.txt, missing HSTS, duplicate H1s and broken internal images. RAIN rebuilt the site on Astro 7 and more than doubled it: 28 indexable pages grouped into 4 SEO silos, 11 of them generated from one shared landing-page template, with FAQPage and BreadcrumbList structured data, a generated sitemap, an llms.txt file and HSTS on every response.
The part we are proudest of is that the site checks itself. A build-time inventory reads every page source and feeds both the sitemap and an internal /seo map. The map draws the silo tree and the internal link mesh, and audits titles, descriptions, H1s, word counts, image alt text, orphan pages and broken links on every build. Today it reports 189 contextual internal links, 0 orphan pages, an average of 675 words per page and a clean status on all 28 pages. The look is dark-first, with oversized Inter headlines, a lavender accent and a light mode. Motion is a small bundled layer (Lenis smooth scroll and Motion reveals) built to work with Astro's client-side router. CSS is inlined, images are optimised WebP, and analytics run in a web worker.
Indexable pages, July crawl to rebuild
Contextual internal links across 4 silos
Orphan pages in the build-time audit
FAQ answers in FAQPage schema on 14 pages
Six decisions that make the site grow without decaying.
A catalogue site rots when every new page is a one-off. We made the structure do the work: one inventory, one template, one map, and a motion layer that cleans up after itself.
One template for every keyword page
A shared SeoLanding component renders the hero, alternating image-and-text sections, spec cards, an optional spec table, FAQs, related links and a quote CTA. Eleven pages, from Egger and plywood to wardrobes and sanitary cubicles, are pure data on top of it, so a new page arrives with its schema, links and CTA already in place.
A site that audits itself at build time
One inventory reads every page source and extracts its title, description, H1, word count, images and links. The same list generates sitemap.xml, with lastmod taken from each file, and the internal /seo map, so the sitemap and the audit can never disagree with the pages.
Four silos and a measured link mesh
Pages are grouped into Panels & Materials (13), Kitchens (6), Fit-out (7) and Showroom & Quote. A related-links block on every template feeds the mesh, and the map counts it: 189 contextual internal links and no page without a contextual inbound link.
Structured data where the answers live
The FAQ accordion and its FAQPage JSON-LD are generated from the same array, so what a visitor reads and what a search or answer engine quotes stay identical. That covers 64 questions on 14 pages, plus BreadcrumbList on every template page.
Motion that survives page swaps
Lenis and Motion are bundled once and re-initialised on every Astro page load. Observers and scroll timelines are torn down before each swap, the theme is re-applied after it, and the intermediate scroll events Lenis fires every frame are filtered out so the router does not hit Chrome's history-update limit.
A dark-first showroom with a light mode
Black surfaces let the panel and kitchen photography carry the page. Inter at weight 800 with tight tracking sets the display type, and a single lavender accent marks eyebrows, CTAs and open states. The light mode swaps every token through one class on <html>, set before first paint so there is no flash.
A full panel catalogue, an SEO lab and a motion layer.
Every page, tool and interaction shipped in the rebuild, grouped the way the site itself is organised. Hover any item for what it does.
- Panneau MDF
- MDF hydrofuge
- Prix panneau MDF
- Panneau mélaminé
- Egger Maroc
- Panneau latté
- Contreplaqué
- High Gloss & Super Mat
- Stratifié HPL & compact
- Panneaux acoustiques
- Découpe sur mesure
- Fournisseur Casablanca
- Hub MDF & mélaminés
- Cuisines équipées
- Prix cuisine équipée
- Cuisine MDF
- Meuble sur mesure
- Façades & portes
- Plan de travail & crédence
- Dressing sur mesure
- Placard sur mesure
- Dressing & salle de bain
- Habillage mural
- Tasseaux bois
- Bardage extérieur
- Cabines sanitaires HPL
- FAQPage JSON-LD
- BreadcrumbList
- Generated sitemap
- Legacy sitemap index
- llms.txt
- Canonical URLs
- Open Graph & Twitter
- Price-intent pages
- Silo view
- Mesh view
- Silo filters
- Page search
- Sortable audit table
- On-page checks
- Orphan detection
- Broken-link check
- Lenis smooth scroll
- Staggered reveals
- Image wipe
- Hero parallax
- Count-up stats
- Reading progress
- Magnetic buttons
- Card spotlight
- Smart nav
- Animated FAQ
- Inlined CSS
- Optimised WebP
- LCP preload
- Non-blocking fonts
- Partytown analytics
- Immutable caching
- HSTS preload
- Quote CTA everywhere
- WhatsApp widget
- Click-to-call
- Mailto contact form
- Maps, Apple Maps, Waze
- Opening hours
- Free samples
- Dark-first palette
- Light mode
- Lavender accent
- Inter 400–900
- Mesh gradients
- Glass nav
- Wave eyebrows
73 pages, tools and interactions in one static build, all owned.
A catalogue that measures its own SEO.
The usual alternative for a showroom business is a page builder. Panolux owns its code, its structure and its audit trail.
| Panolux | WP + builder | Wix | Webflow | |
|---|---|---|---|---|
| Static HTML, no plugin surface | ✓ | — | ✓ | ✓ |
| FAQ schema generated with the content | ✓ | ○ | ○ | ○ |
| Silo and link-mesh map | ✓ | ○ | — | — |
| On-page audit on every build | ✓ | ○ | ○ | ○ |
| llms.txt | ✓ | ○ | ○ | ○ |
| No render-blocking stylesheet | ✓ | — | — | — |
| Analytics off the main thread | ✓ | ○ | — | — |
| Smooth scroll and scroll-linked motion | ✓ | ○ | ○ | ✓ |
| Dark and light theme, no flash | ✓ | ○ | — | ○ |
| Fully owned code, no subscription | ✓ | ○ | — | — |
From 13 pages to a 28-page catalogue that checks itself.
The rebuilt site is live at panolux.ma. The indexable catalogue grew from the 13 pages in the July crawl to 28, written in French and totalling about 18,900 words by the site's own counter. The main issues that audit flagged now have fixes in the code: a generated sitemap referenced in robots.txt, an llms.txt file, HSTS on every response, trailing-slash canonical URLs that match the production redirects, and build-time checks for H1s, orphan pages and broken links. FAQPage markup covers 64 answers on 14 pages, and the internal map reports 189 contextual links with no orphans and a clean status on all 28 pages.
We have not re-crawled the site since the rebuild and claim no ranking, traffic or lead figures. Next on the list: LocalBusiness schema for the showroom, rendering the FAQ schema on the kitchen-price page, removing an unused animation dependency and self-hosting the icon script. Because every page is data on a shared template and checked by the /seo map, each new material or service page lands linked, marked up and audited from day one.
Panolux — FAQ
RAIN Design Studio rebuilt panolux.ma as a static Astro 7 site with 28 indexable French pages in 4 silos: 13 panel and material pages, 6 kitchen pages, 7 fit-out pages, a showroom and quote page, and the homepage. It includes FAQ and breadcrumb structured data, smooth motion, a light and dark theme, and an internal SEO map.
It is an internal, non-indexed page generated at every build from the same page inventory as the sitemap. It draws the silo tree and the internal link mesh, and audits each page's title, description, H1, word count, image alt text, inbound links and broken links. It currently reports 189 contextual internal links and no orphan pages.
FAQPage JSON-LD covers 64 answers on 14 pages and is generated from the same data as the visible accordion. Template pages also carry BreadcrumbList schema. The site publishes a generated sitemap, an llms.txt file and one canonical URL per page.
A site audit exported in July 2026 crawled 13 pages and flagged a missing sitemap and llms.txt, missing HSTS, redirecting URLs and 12 pages with a single internal link. The rebuild has 28 indexable pages and fixes for those issues. The site has not been re-crawled since, and RAIN claims no ranking or traffic results.
Panel, kitchen and dressing projects are quoted individually. Price-intent pages such as the MDF and fitted-kitchen price guides explain what drives cost and lead to a free quote request instead of a price list.