Context
LCDC is a property-care and laundry business serving Port-la-Nouvelle, Sigean and the surrounding towns on the Aude coast: seasonal-rental upkeep, linen management, guest check-ins. A highly local, highly competitive trade where most demand starts with a Google search on a phone.
So the site isn’t a brochure exercise. It has to surface on the right local queries and turn them into quote requests, while giving a service business a premium image.
Art direction
Dark background, oversized typography, smooth scrolling (Lenis) and scroll-triggered reveals (Framer Motion): the staging should evoke careful work rather than a list of services. A “request a quote” call to action stays reachable at all times, with a fixed bar on mobile where most traffic lands.
Rendering: native static prerendering
The site is built with React Router v8 in framework mode, using native static prerendering
(ssr: false + prerender). Every page is generated as HTML at build time, then hydrated on the
client.
The detour is worth explaining: the project first ran on React Router v6 with a third-party
prerenderer, then migrated to v7’s native prerendering and finally to v8. The payoff is direct:
title, description, canonical and Open Graph tags ship inside the delivered HTML, readable
by Google and by the Facebook, LinkedIn or WhatsApp crawlers, with no external rendering service.
One deployment detail is worth noting: on Vercel, cleanUrls redirects .html URLs and broke the
rewrite to the SPA fallback. The build therefore copies that fallback to 404.html, which returns a
real HTTP 404 on the error page instead of a disguised 200.
Local SEO
- Six prerendered “service + town” pages (property care and laundry in Port-la-Nouvelle, Sigean, Gruissan…), one search intent per page.
- Enriched
LocalBusinessstructured data (geo,areaServed,priceRange,logo) andFAQPagemarkup on the FAQ. - Titles phrased “service + town”, a single
<h1>per page,sitemap.xmlandrobots.txt. - Bilingual FR / EN, English served under
/en, as the seasonal clientele is largely foreign.
Client autonomy and privacy
Editorial content and photos are driven by Sveltia CMS, a git-based CMS: each save creates a commit, Vercel redeploys, the page is up to date. No server to maintain, no subscription.
Three choices pull in the same direction on privacy: self-hosted fonts via Fontsource (zero requests to Google Fonts), cookieless Umami analytics, and Cloudflare Turnstile instead of a tracking captcha. The result: no mandatory consent banner, just an information notice.
The quote form goes through a serverless function and Resend, protected by three layers: a honeypot field, silent rejection of submissions that arrive too fast, then Turnstile verification.
Where the project stands
The site is built and deployed to a Vercel preview environment. Still pending on the client side: final content and photography, legal details, image-rights clearance for the properties shown, GitHub authentication for online CMS editing, and the switch to the final domain.
Key deliverables
- Bilingual prerendered marketing site (home, about, clients, contact, legal notice)
- Six “service + town” landing pages for local SEO
- Content editing interface for the client (Sveltia CMS)
- Quote form with three-layer bot protection
- Cookieless analytics and handover documentation