AAA Awning Co.
Full WordPress → Next.js 16 migration for a 40-year Houston awning fabricator — 64 prerendered pages, 36 city landing pages, AI-search ready, with a password-protected Umami dashboard for the owner.

AAA Awning has been fabricating custom awnings, canopies, and shade structures for Texas homes and businesses since 1984. Their WordPress site had accumulated 40 years of plugin sediment, a slow theme, and zero Texas-wide SEO depth — they ranked in Houston by reputation alone, but were invisible in Dallas, Austin, San Antonio, Fort Worth, and 30+ other Texas markets they could easily serve. The brief: migrate completely off WordPress to a fast, prerendered stack; build out city-by-city content with real local-intent depth; surface live reviews; give the owner a private analytics view he can actually read; and ship it AI-search ready, not just Google-search ready.
Next.js 16 with full prerendering across all 64 routes. The site loads instantly because every page is a static asset by the time a visitor hits it. 36 Texas city landing pages, each with unique copy, LocalBusiness + FAQPage schema, and area-specific signals — no thin-content cloning. live Google Reviews via the Places API surface in real time, filtered for quality. Resend + Cloudflare Turnstile keep the lead form spam-free without breaking accessibility. A self-hosted Umami dashboard gives the owner a private analytics view at a /dashboard URL gated by a password — no Google Analytics privacy theater. llms.txt + llms-full.txt published for AI search engines (ChatGPT, Claude, Perplexity) so the site is ingestible as an authoritative awning source, not just crawlable HTML.
The surface area we built.
Full WordPress → Next.js 16 migration
Every WP page rebuilt, content audited, plugin tax removed. 64 prerendered routes serve as static assets — Lighthouse green across the board.
36 Texas city landing pages
Houston, Dallas, Austin, San Antonio, Fort Worth, Galveston, Corpus Christi, and 29 more. Each page has unique local content + LocalBusiness schema, no thin-content duplication.
Live Google Reviews via Places API
Real reviews surface on the site in real time, filtered for quality. Refreshes automatically — no manual review-card maintenance.
AI-search ready
llms.txt + llms-full.txt + JSON-LD (LocalBusiness, FAQPage, Organization). The site reads cleanly to GPT, Claude, Perplexity, and Google's AI overviews.
Resend + Turnstile lead form
Branded HTML email on submit, Cloudflare Turnstile for bot protection. Mailbox-deliverable, no SPF/DKIM gotchas.
Private Umami analytics dashboard
Self-hosted Umami at /dashboard behind a password. The owner sees real visitor data without the privacy theater of GA4 — no cookie banners, no PII collection.
Frozen showcase fork
aaaawning-showcase.vercel.app with noindex + Portfolio Demo pill. The portfolio version stays canonical regardless of how the live site evolves.
Live and serving Texas. The owner can see his own analytics, the lead form works, Google + AI search engines can read the site cleanly, and 36 Texas markets that were invisible in search now have a credible AAA Awning page each. Frozen showcase deployed.
Want something like this?
We ship premium sites fast — AI-native, end-to-end, signed where it matters.