WordPress
Nearly every site we ship runs on WordPress. We've tried Payload, Sanity, and a handful of other modern CMSes. None of them survive contact with year-three maintenance. WordPress does.
What it is
WordPress is the content management system that powers about 43% of every website on the internet, from Spotify Newsroom and TechCrunch to roughly half a billion smaller sites you've never heard of. It's free, open source, and has been continuously developed since 2003.
What it actually does: you write content (pages, posts, products) in an admin panel. WordPress turns that content into a public-facing website. The look and feel comes from a theme. Extra functionality comes from plugins. Everything's editable without a developer once it's built.
How we use it
Custom theme + custom plugin. Always.
We build every WordPress site from two files: a custom theme and a custom plugin. The theme handles how the site looks. The plugin handles everything else: custom post types, fields, lead pipelines, integrations, anything that should survive a theme swap.
This is not the default WordPress workflow. The default is to install a pre-built theme, stack ten plugins on top, and call it a day. That's how 90% of WordPress sites get built. It's also why most WordPress sites are slow, ugly, and impossible to maintain three years in.
The file structure
Every site we ship looks like this:
themes/outerwave/
style.css <- theme header
functions.php <- enqueues, theme support
assets/css/
tokens.css <- all design tokens
global.css <- resets, body, utilities
components/
nav/nav.php + nav.css
hero/hero.php + hero.css
(one folder per UI piece)
inc/
enqueue-component.php <- on-demand component CSS loader
plugins/outerwave/
outerwave.php <- plugin bootstrap
includes/
cpts.php <- custom post types
fields/ <- MetaBox field groups
leads.php <- lead pipeline + Salesforce sync
Components are reusable. Drop the navigation onto a new page in one line. Need a new section type? Make a folder, ship it. The whole site is composable.
No page builders. None.
The page builder market is a parade of bad ideas dressed up as productivity:
- Elementor. Generates DOM trees so deeply nested they crash Lighthouse. Every paragraph wraps in five divs. Drag-and-drop has a real cost.
- Divi. Same problem, slower. Locks your content inside Divi shortcodes; switch themes and your pages turn to gibberish.
- WPBakery / Visual Composer. The shortcode soup approach. Your content becomes
[vc_row][vc_column][vc_column_text]on every line. Migration cost: rewrite everything. - Bricks. Newer, faster than the rest, but still produces builder-locked content. Better trade-off, still a trade-off.
- BeTheme's Muffin Builder. The most aggressively bad builder we've ever inherited. JSON blobs jammed into postmeta, breaks every time the theme updates, impossible to edit anywhere except the visual editor. We've rebuilt three sites from Muffin Builder. We will not build a new one.
Custom-coded means: everything on the page is there on purpose. Page weight is what we chose. There's no builder in the loop generating wrappers. Lighthouse hits 100 because the code is actually small.
Not a ThemeForest template
Buying a $59 theme on ThemeForest looks like a shortcut. It isn't. You inherit:
- 30,000 lines of CSS, 80% of it for features you don't use
- 15 bundled plugins that exist to demo features in the theme preview
- A "look" that 4,000 other sites are also using
- Theme support that ends the day the author moves on to v2
- No way to change anything fundamental without forking the theme into an unmaintainable mess
Our themes are written for one client. Every file is necessary. The CSS file is 40KB, not 800KB. When something needs to change, it's editable in five minutes by anyone who reads PHP, including the next developer your client hires.
What you get
- You own your content. No SaaS lock-in. No monthly platform fee. No vendor that gets acquired and shuts down.
- Edit pages, blog posts, and pricing yourself. No developer needed for content changes.
- Portable. Your site moves to any host with a database in an afternoon.
- 35,000+ plugins if you ever need to bolt on something new.
- The largest developer pool on earth. Easy to hand off if we ever stop working together.
Where we don't use it
WordPress isn't always the right answer. The clearest cases where we reach for something else:
Astro
For static brochure sites under 10 pages where the content rarely changes. A freelancer's site, a single-product launch page, a restaurant menu. No need for an admin panel, no logins, no comments. Astro generates pre-rendered HTML, deploys to Cloudflare Pages or Netlify for $0-5/month, and loads instantly because there's nothing to load.
We also reach for Astro for internal tools and standalone calculators. Interfaces where WordPress's content-management layer is overhead, not value.
The ones we tried and stopped reaching for
Modern headless CMSes (Payload, Sanity, Strapi, Contentful) solve real problems WordPress doesn't. Better APIs, better content modeling, better developer ergonomics. We've shipped on Payload and Sanity. They're good products.
The problem is year three. A WordPress site we built in 2018 still gets security patches, plugins still update, and the next developer can read the codebase without learning a stack. A 2018 Sanity site needs a SaaS subscription that's been through three pricing changes and a Node version that's gone EOL. Modern CMSes age faster than WordPress does.
WordPress is boring. That's the feature.
Projects built with WordPress.
-
FINTECH
Corepay
A custom WordPress site and Salesforce lead pipeline for a Florida payment processor. Custom-coded theme + plugin, 62 industry pages, 14 states, six lead-gen calculators, and a 12-step Claude AI chatbot.
View case study -
MUSIC & ENTERTAINMENT
DrumSpy
A custom BricksBuilder site with a clever Content Egg PHP integration.
View case study
Want a site built with WordPress the way we build it?
Quick call, real estimate within a business day. No sales pitch.