Lavage Lebrun · Web Design
A bilingual lead engine for a pressure-washing crew — and a CMS they run themselves.
Exterior cleaning is sold on proof. A homeowner deciding whether to pay someone to wash their siding wants to see the difference, in this neighbourhood, on a house like theirs. So the site is built around the crew's own job photography and around one job: getting a qualified quote request, in the visitor's language, with a verified address attached.
The proof section shows three jobs as labelled Avant/Après pairs, one per row. It started as a drag-to-reveal slider, which had to go: the crew shoots each angle freehand, so the two frames never register pixel-for-pixel and the slider visibly mismatched. Two honest frames at full width beat a clever widget that misaligns — and at full width you can actually see the hard-water spotting lift off the glass.
The form asks for five things and verifies the address as it's typed through Google Places, so a quote arrives with a real property attached rather than a typo. Cloudflare Turnstile keeps the automated traffic out, and the endpoint is rate-limited server-side.
Behind it, every submission is written down locally before anything else happens, then pushed to the client's CRM. If that push fails the enquiry is still on file and the visitor still gets a confirmation — a lead-generation site that answers a filled-in form with "please try again" has already lost the job.
The site is French first, with English a toggle away, and the copy for both lives in one content tree rather than two parallel templates. Every string a visitor reads — headings, service descriptions, the FAQ, form labels, validation messages — exists in both languages.
Section copy ships with the build as defaults; the database only stores what the client has changed, deep-merged over the top. The practical effect is that the site cannot be broken by an empty table or a half-finished edit — and the owner can rewrite a service description, in either language, or swap a job photo, from a studio themed to match the site itself. Admin access is handed out through signed, expiring invitation links.
Near-black surfaces with a single cyan accent, condensed Bebas Neue against DM Sans. The hero sits on a photograph of the crew softwashing a soffit, carried by three separate scrims so the headline stays readable without washing out the water spray. Scroll reveals, an auto-advancing service showcase, and a service-area map drawing the Montérégie boundary. Typed Vue 3 over an Inertia-driven Laravel 12 backend, Tailwind CSS 4, deployed on a dedicated Forge server with SSL.
Technologies: Laravel 12, Vue 3, Inertia.js, TypeScript, Tailwind CSS 4, vue-i18n, Google Maps Platform, Cloudflare Turnstile, Vite