Scroll down
Discuss your project with me
Back to cases

Golden State Windows

Golden State Windows — from a front-end prototype to a fast, indexable Bay Area site

A window and siding company's React prototype turned into a production site: lead capture with e-mail alerts, real business data, 16 prerendered pages, six city pages and real client reviews.

Prototype → production · 16 pages
Year
2026
Duration
July 2026
Industry
Home improvement — windows & siding
Country
United States (San Francisco Bay Area)
Services
Web Development, SEO
Golden State Windows — desktop homepage
Desktop · 1440 px
Golden State Windows — mobile homepage
Mobile · iPhone

The results

  • 16

    Pages served as prerendered HTML, each with its own title and markup

  • 6

    City pages for the Peninsula, with local copy and FAQ

  • 95

    Lighthouse performance on desktop, with zero layout shift

  • 100

    Lighthouse SEO and best practices

Project overview

Golden State Windows replaces windows, installs doors and siding across the San Francisco Bay Area from its base in Daly City. The client came with a front-end prototype that looked finished, but it wasn’t a working business site yet.

The contact form sent nothing: every lead vanished after a “thank you” message. The business data contradicted itself, with two different founding years and credentials nobody had confirmed. Every page shared one title, so search engines and AI crawlers saw an empty single-page app. My job was to turn that prototype into a production site the company could put its name and its phone number on.

My role in the project

I personally took the project from the handoff to launch on goldenstatewindows.com. The areas I owned and delivered directly:

  • An audit of the handoff, then a rebuild on Vite, React and TypeScript with a clean repository and Vercel deploys from git
  • Lead capture on Supabase with e-mail alerts through Resend
  • Real business data in one place, and every claim the company couldn’t confirm taken off the site
  • SEO for a single-page app: per-page metadata, structured data and a prerender, so every route ships as real HTML
  • Local pages, a reviews page and a portfolio built from the client’s own photos
  • Performance, accessibility, security headers and a cookie banner wired to Google Analytics consent

What I built: leads and data

  • The form validates every field and has a hidden spam trap. It writes each request to a database table that the public can add to but never read
  • A database trigger calls an edge function that e-mails every new lead to the office. If the e-mail ever fails, the form still saves the request
  • A thank-you page after sending, and Google Analytics 4 with Consent Mode tied to the cookie banner
  • One source of truth for the address, phone, hours, service areas and the state contractor licence number, which shows on every page as California requires for contractor ads
  • Honest copy: claims the client couldn’t back, such as a lifetime warranty or triple-pane glass, were removed from the pages, the metadata and the structured data

What I built: SEO and pages

  • Every route gets its own title, description, canonical URL and structured data: the business with its licence and opening hours, its services, breadcrumbs and, on the city pages, FAQ
  • A prerender step after each build opens all 16 pages in headless Chromium and saves them as full HTML, so Google and AI crawlers read the content without running JavaScript. Unknown addresses return a real 404
  • A service-area hub and six city pages (Pacifica, Daly City, South San Francisco, San Mateo, San Bruno and Burlingame), each with its own copy and FAQ
  • A reviews page with client video testimonials, written Google reviews and the company’s Yelp record. The reviews widget is wired into the React app by hand, because its standard embed doesn’t run in a single-page app. There’s no self-serving rating markup, which Google doesn’t allow
  • A portfolio of 30 real project photos with captions, plus privacy, terms and cookie pages and animated 404 and thank-you pages
  • An llms.txt file and static structured data for AI search

Stack and performance

React 18 and TypeScript on Vite, with Tailwind CSS and shadcn/ui components. Supabase provides Postgres with row-level security and Edge Functions, Resend sends the e-mail, and the site is hosted on Vercel. Images ship as AVIF and WebP in responsive sizes (the hero went from 155 KB to under 41 KB), the Outfit font is self-hosted, and routes load as separate chunks. Lighthouse on desktop gives 95 for performance with zero layout shift, and 100 for SEO and best practices. Content Security Policy, HSTS and the other security headers are set at the edge.

Key screens

Golden State Windows — Services on the home page: window replacement, siding and energy-efficient windows, each card leading to its part of the services page.
Services on the home page: window replacement, siding and energy-efficient windows, each card leading to its part of the services page.
Golden State Windows — A portfolio of 30 real project photos in a responsive masonry, each labelled with its service and a short caption.
A portfolio of 30 real project photos in a responsive masonry, each labelled with its service and a short caption.
Golden State Windows — Service areas: a hub of six Peninsula cities, each with its own page, local copy and FAQ.
Service areas: a hub of six Peninsula cities, each with its own page, local copy and FAQ.
Golden State Windows — The quote request: validated, protected from spam and saved to the database, with an e-mail to the office for every lead.
The quote request: validated, protected from spam and saved to the database, with an e-mail to the office for every lead.

Full homepage, desktop

Golden State Windows — full-page website screenshot

Tech stack

  • React 18
  • TypeScript
  • Vite
  • Tailwind CSS + shadcn/ui
  • Supabase (Postgres, RLS, Edge Functions)
  • Resend
  • Puppeteer prerender
  • Vercel

Want a similar project done?

Tell me about the task. I will personally look at your project and suggest the right way to deliver it.

Discuss your project with me