Case study
Product launch sites that feed the CRM
Three server-rendered product sites whose enquiries go straight into the CRM, so no lead is lost.
- My role
- Sole engineer
- When
- 2026
- Status
- Live
- Stack
- TanStack Start, React, Tailwind, Zod, Vercel
3
product sites, one per model
159 → 14.5 MB
walkthrough video, as shipped
The problem
Advertising campaigns needed somewhere to send people that was better than a PDF brochure, and every enquiry had to arrive in the CRM with the campaign that produced it.
What I built
A single-page, server-rendered site per model that works as an interactive brochure: a walkthrough video, interior gallery, specification tables, deck plans in a zoomable lightbox, a comparison with the sibling models, and an enquiry form, with a WhatsApp button throughout.
A lead is never lost
The form posts to a server function, so no key reaches the browser. It validates the input, silently drops spam caught by a hidden field, rate-limits per visitor, then sends the lead to the CRM with its product and campaign. If that fails it falls back through two email providers and a relay, and if the whole function fails, the page offers a pre-filled email and WhatsApp message instead.
Details that matter
Security headers on every response, including a strict content security policy. A first-party, cookie-free analytics beacon that keeps the landing page's campaign tags through the visit and reports into the same dashboard as the leads. A 159 MB source video shipped as 14.5 MB, with video paused when it scrolls out of view. On phones the layout changes, not just shrinks, and reduced-motion settings are respected.
The hard part
The framework turned server errors into a bare unhandled marker, which made failures impossible to diagnose. I added a capture layer that follows the error's cause chain and logs it, then shows a proper error page.
Limits
The three sites live in three repositories; the shared parts should be one template.