← Work
WordPress 2015

Carter Park Dental Website

Carter Park Dental

In 2015, Carter Park Dental was a brand-new practice looking to establish its digital footprint. I built a custom website that brought their initial vision to life and have continuously maintained and optimized it over the last decade. As their business has evolved, so have their needs and we are currently partnering again to design and develop a complete modern web redesign.

Role
Web Developer
Timeline
2 months
Stack
WordPress ACF Pro Webpack Sass
Carter Park Dental home page

Overview

Carter Park Dental is a fully custom WordPress marketing site built for a Portland-area dental practice. The theme is designed to attract new patients and build trust and features pages for services, team bios, a before/after gallery, patient reviews, FAQ, blog, and a contact form with an embedded map. All content is managed through Advanced Custom Fields, and the site integrates Gravity Forms for lead capture, RevenueWell for reviews, and Disqus for blog comments. The front end is compiled through a modern Webpack 5 + TypeScript build pipeline, delivering a polished, brand-consistent experience on top of a classic PHP WordPress theme architecture.

View the website here: carterparkdental.com.

Why it's notable

This project demonstrates the ability to take a legacy WordPress workflow and modernize it without disrupting existing content or functionality. The theme was refactored to use a TypeScript + SCSS source layer compiled through Webpack 5, bringing type safety, modular code organization, and production-optimized assets to what was previously a Grunt-based stack. It also pulls a previously standalone reviews plugin directly into the theme as a custom post type — a deliberate consolidation that simplifies maintenance. The result is a cohesive, professionally branded site with a clean separation between content management and front-end code.

Unique challenges

One of the more interesting constraints on this project was building a modern developer experience on top of WordPress conventions — using TypeScript modules and SCSS while keeping jQuery as an external global (as WordPress requires), and ensuring Webpack treated it accordingly. The contact dropdown also presented a subtle challenge: it contains a live Gravity Form, which re-renders on certain events and breaks layout calculations. This was solved by wiring a ResizeObserver to the Gravity Forms gform_post_render event to keep the dropdown dimensions in sync. The site also needed to gracefully support a site-wide pop-up announcement system — built with a localStorage-backed dismiss pattern so returning visitors aren’t interrupted on every page load.