Sill & Gable

Summary

Most small contractors' websites are a page builder theme with a contact form: slow, hard to update and generic. A renovation company's site has a few specific jobs. It has to show finished work, especially the before and after. It has to rank in the neighborhoods the company serves, and it has to turn a visit into a quote request.

I built Sill & Gable, a concept design-build company in San Diego, to show how I'd build that site for a client on WordPress: a custom block theme the owner can edit, with no page builder. The company, its projects, reviews and photos are all invented, and the site says so.

Key Features:

A Theme Built From Scratch - A block theme with its own theme.json style system: the brand's colors, fonts, type sizes and spacing are the only options in the editor, so pages stay on brand. The homepage is built from patterns the owner can rearrange, edit or reuse on other pages.

Structured Content - Services, service areas, projects and reviews are their own content types, with fields edited in a sidebar panel: starting prices and timelines, neighborhoods, a project's service, location, budget and photos. Pages fill themselves in from that content, and project pages link to their service and area.

Before and After Slider - A custom block that compares each project's photos. It works with a mouse, a finger or the arrow keys, announces its position to screen readers, and shows the photos side by side without JavaScript.

Local Search Pages - Every service area gets its own page, titled "Home renovation in" that area, listing its neighborhoods, nearby projects and neighbors' reviews. Structured data tells search engines the business's hours, services and the areas it serves.

A Quote Form That Works Without JavaScript - It saves each request as a private lead in wp-admin and emails the business. Errors show as a linked summary and a message on each field, and spam is stopped by a hidden decoy field, a time check and a rate limit instead of a captcha.

Business Details in One Place - Phone, email, hours and service area are set on one settings screen, and the footer, contact blocks and structured data all read from it.

AI-Generated Photography - I generated every project photo with AI image models. Each "before" photo is an edit of its "after", asking for the same room from the same angle with dated finishes, so the two line up in the slider.

Technical Highlights:

The theme handles presentation and a companion plugin holds the content types, blocks, quote form and settings, so a client could change themes without losing their content. The custom blocks are dynamic, rendered in PHP, and the editor scripts run on WordPress's own components with no build step. Text passes WCAG AA contrast on every background, and images are resized, served as WebP and lazy-loaded below the first screen.

The whole site can be rebuilt from one JSON file: a WP-CLI script loads the services, areas, projects, reviews, photos, pages, menu and settings, and updates them in place when rerun. The demo is a static copy, crawled from WordPress and hosted on Vercel, so the quote form there explains that it's a concept site instead of sending anything.

This project shows the WordPress side of what I offer clients: custom themes built on the block editor, content structured around how the business works, and sites the owner can keep up to date themselves.

Application Screenshots

The homepage, a project's before and after slider and a service page
Homepage hero: the headline Kitchens, bathrooms and additions, built like it's our own home, beside a photo of a remodeled kitchen
Homepage: brand, headline and the two actions that matter
Before and after slider on a project page, half showing a dark 1960s galley kitchen and half the open oak kitchen facing the valley
Before and after slider: drag it, or use the arrow keys
Three before and after pairs: a galley kitchen, a pink-tiled bathroom and an empty backyard, above the remodeled kitchen, bathroom and backyard cottage
Each "before" was made from its "after", so the pair lines up
Kitchen remodeling service page with the starting price, typical timeline and a Request a quote button
Service pages with prices, timelines and what's included
Service area page for La Mesa with its region, a description of local housing and the neighborhoods served
A page for every service area, written for local search
Quote form with an error summary linking to each field, and each field's error message shown above it
Quote form errors: a linked summary, and a message on each field
WordPress editor for a project, with a Project details panel holding duration, budget and the before and after photos
Project details edited in a panel, no code
A quote request in wp-admin with the client's contact details, project type, location, budget and timeline
Quote requests saved as private leads in wp-admin
The homepage, a bathroom project's before and after slider and the La Mesa service area page on phones
Fully responsive on phones

Tech Stack

WordPress

Block Theme (theme.json)

Custom Blocks

Custom Post Types

PHP

JavaScript

CSS

WP-CLI

Structured Data (JSON-LD)

AI Image Generation (fal.ai)

Vercel

Interested in working together?Let's talk.

I would love the opportunity to work with you on your next project! If you're interested and want to start a conversation, reach out below.

Contact