The Social Landscape
A Squarespace-to-WordPress rebuild for a Minneapolis lawn care brand. Custom Gutenberg theme, ACF-driven content toolset, GSAP animation layer, managed Linode hosting, and a self-service publishing workflow the owner can actually run.

The brief
The Social Landscape is a lawn care company serving South Minneapolis and Edina, owned and run by Eric Dean. The business was on Squarespace, the brand was due for a refresh, and Eric lined up a designer freelancer to lead a top-to-bottom rebrand and site redesign. An SEO specialist was brought in to handle sitemap and SEO content planning. My job was to make all of it real on the web.
The mandate was specific: take it off Squarespace, put it on a self-hosted WordPress stack, and hand the team a toolset Eric could run after the dust settled — without the design drifting every time he posted an update.
My scope vs. the rest of the team
This was a four-freelancer project. To keep the case study honest about what I owned:
- SEO specialist — sitemap, URL strategy, on-page priorities
- Designer — new logo, high-fidelity comps, brand system (typography, color, photography direction)
- Me — everything that turned those deliverables into a running, secure, editable website
My deliverable was a WordPress site that matched the designer's comps pixel-for-pixel, satisfied the SEO plan's URL structure, and gave Eric a way to add new services, locations, and content without breaking any of those.
The build
Custom Gutenberg theme on ACF
Rather than reach for a page builder, I built a custom theme using Gutenberg block patterns + ACF Pro for structured content. Every reusable section in the comps — service cards, image grids, the slide-out menu, the quote-CTA strips — became a registered block pattern with ACF field groups locked to brand-approved options.
What this meant for Eric: when he adds a new service, he can't pick the wrong shade of green. The colors, type scale, spacing, and image ratios are all part of the block's schema, not free-form choices in a WYSIWYG.
// Excerpt: ACF block registration with locked brand controls
acf_register_block_type([
'name' => 'tsl/service-card',
'title' => 'Service Card',
'category' => 'tsl',
'icon' => 'admin-customizer',
'mode' => 'preview',
'supports' => [ 'align' => false, 'mode' => false ],
'render_template' => 'template-parts/blocks/service-card.php',
]);Custom post types + URL hierarchy
The SEO plan called for clean, durable URLs by service category and location. I split content into the appropriate post types — service, location, seasonal_package — each with rewrite rules that produce predictable, hierarchical URLs (/services/weekly-lawn-mowing/, /locations/edina/, etc.) and has_archive set for category landing pages.
ACF-powered menu builder
The default WordPress menu UI is fine for a 4-link nav, but the design called for a full-screen overlay menu with grouped sections, contextual links, and the ability to feature certain items. I built a custom menu builder on top of ACF — repeater fields for groups, sub-repeaters for items, optional badge text, optional featured flag. Eric edits the whole menu from one screen and the front-end renders the slide-out exactly as designed.
Form tooling + SMTP relay
The contact and "Get a Quote" forms needed to actually arrive in Eric's inbox without bouncing or getting flagged. I configured an SMTP relay so WP core email (admin notifications, form submissions, password resets) routes through an authenticated provider with proper SPF/DKIM alignment — no more notifications going to spam, no more silent delivery failures. The forms themselves run through a form builder I extended with custom fields and conditional logic for the quote flow.
Animation layer with GSAP + MutationObserver
Subtle, never showy. Section reveals on scroll, the staggered image-collage entry on the homepage hero, the slide-out menu transitions, the service-grid hover state — all driven by GSAP timelines. To keep the animation system from breaking when Eric publishes new content via Gutenberg, I wired up a MutationObserver that watches for new block nodes entering the DOM and re-binds the relevant animations automatically. He doesn't have to know it exists; new blocks just work.
Infrastructure
Hosting on Linode
The site lives on an Ubuntu server on Linode that I manage as part of my shared client infrastructure. Nginx in front, PHP-FPM, MariaDB, automated daily backups, and a staging subdomain for in-progress work. Eric doesn't have to think about any of it — when the site needs an update, I push it.
Security + spam
A WordPress security plugin handles the brute-force login limiting, file integrity monitoring, and basic firewall rules. Spam prevention on the forms is the bigger value here — between the SMTP setup and the plugin's spam scoring, Eric stopped seeing junk submissions in his inbox almost entirely.
SEO foundation with RankMath
RankMath handles the on-page SEO surface — schema, meta, sitemap generation. The SEO freelancer's sitemap and URL plan were implemented in the theme; RankMath sits on top to give Eric per-post controls without overwhelming him.
What the client actually gets
The handoff goal was always the same: Eric should be able to add a new service, post a seasonal update, or publish a new location page without needing me — and without the design degrading.
- A locked-down block library that produces on-brand output by default
- A custom menu builder that doesn't require touching code
- Form submissions that reliably arrive
- A staging environment for risk-free edits
- Hosting and security managed on his behalf
- SEO controls that match the freelancer's plan
Outcome
The Squarespace site got the job done; the new site does the job better and gives Eric room to grow. The brand reads consistently across every page because the tools force it to. The site loads fast because it's a hand-built theme, not a stack of page-builder bloat. New content goes live in minutes, not hours, and never looks off-brand.
It's the kind of project I look for — bring in the right specialists, do the engineering work well, and hand the client back a business that runs better than it did before.
Gallery


