Root Structure

Squarespace → custom WordPress rebuild for Chris Gorga's small Omaha woodworking/landscaping company. Trade arrangement (web work credited against fence/wall services).

Project Info

Job Number n/a (freelance / trade)
Phase Active — Phase B/C content & polish (close to launch-ready)
Billable Trade arrangement — web $4,960 credited against $11,783 fence/wall services

Client Contacts

Site Reference

Local Path /Users/edowns/Local Sites/root-structure/app/public/wp-content/themes/root-structure
Local URL https://root-structure.local
Production URL https://www.rootstructureomaha.com
Hosting Flywheel
GitHub ericdowns/root-structure (private)
SSH team+flywheel-hosting+root-structure@ssh.getflywheel.com
sites.json id root-structure (color #5A823B)
Theme docs See CLAUDE.md at theme root and docs/ folder in theme repo

Integrations

Service Status Details
Harvest N/A Trade arrangement — not tracked in Harvest
Todoist (Dev) Active Root Structure (6gXpXFFP2hJ24QCP) — solo board (no PM)
Basecamp N/A Solo freelance — comms via email
Slack N/A Solo freelance
Masterdoc Active Root Structure Master
Drive Folder Active Root Structure (1nkAMWJsZ3aWtBDU2EoE_bGTfyzRLpd77)
Figma (Design) Active Root Structure Design
Squarespace (legacy) Read-only Old site — content migrated 2026-03-12. Login in PROJECT-INFO.md
WP Login Active Local + prod URLs in PROJECT-INFO.md; password in 1Password G&M vault

Project Status

2026-05-07 (evening) — Big push: SEO, animations, content fixes, infrastructure

Shipped (Eric's work this session): - SEO + LLM optimizationinc/seo.php adds Organization JSON-LD on homepage, LocalBusiness schema on Service Areas (with Omaha geo + 7 service-area cities + 7 service offerings), explicit Allow rules in robots.txt for OAI-SearchBot / ClaudeBot / PerplexityBot / Google-Extended, virtual /llms.txt and /llms-full.txt routes, and a default homepage meta description (Yoast UI overrides win when set). Commits e89a8dd + f9fd24f. - GLightbox zoom bug fixed — disabled zoomable to kill the click-on-image distortion (the click-to-zoom transform conflicted with our DOM rewrite that anchors descriptions inside the image container). Commit 677d062. - Homepage featured_work video popup removed — client doesn't have video, so removed the play-button overlay + video-URL link wrapper. Field name kept as video_thumbnail for back-compat with existing data; admin label is now "Featured Image". Commits a9d8ac3 + 9921934. - Site CTAs audited and updated — homepage cta_banner now reads "Start your project → /contact/" (was placeholder "CTA Headline Goes Here" → /our-work/), homepage work_categories redundant link cleared, and About / Why Us / Service Areas / FAQs each got a closing cta_banner with conversion-focused copy → /contact/. Commits 59f7982 + 080bd3a. - Why Us community engagement section — drafted a new generic link_list module (designed during this session; Eric committed the actual module code as 9ff6ae5 mid-session). Populated on Why Us with 6 partners: BFF Omaha, City Sprouts, Exist Green, Omaha Parks Foundation, Sheltering Tree (community), Tri-Faith Initiative. - Sheltering Tree URL fix — initial URL was shelteringtreefarm.org (NXDOMAIN). Swapped to shelteringtreecommunity.org and updated the description from "Community farm and education" to "Housing for adults with developmental disabilities" to match the actual nonprofit. Commit dfc0bb8 + d306f78. - Favicon installed — generated images/favicon-source.png (512×512, cropped logo arch + leaves, no wordmark) and uploaded as WP Site Icon (attachment 388). WordPress now emits 32×32, 192×192, and apple-touch-icon link tags automatically. Re-runnable via tools/install-favicon.php. Commits 96b6c7e + c95f30a. - Jonathan headshot verified — Drive file (Apr 17) and WP attachment 332 are byte-identical (matching SHA-256). Phase A's import is current; no swap needed. - GSAP animations pass 1js/gsap-animations.js rewritten to the safe gsap.set + ScrollTrigger.create({onEnter}) pattern (kills the self-play-on-load + flash-on-scroll bug), added replay mode (RS_ANIM_REPLAY, console helper, auto-on for LAN IPs), 3-second fallback now below-fold-aware, large-grid stagger auto-tightens. Added .reveal-up clip-path class. Sprinkled .fade-up / .fade-in / .stagger-fade-up classes across 11 modules (intro_text, work_categories, zigzag_content, testimonial, featured_work, service_cards, stats_grid, team_grid, area_list, link_list, cta_banner). Commits bb31734 + 4321aa6. - About hero subtitle fixpage_hero helper (inc/template-functions.php) had two bugs on the image-background variant: subtitle hard-coded text-brand-brown/85 (unreadable on the brown overlay) and p-xl (35px) was oversized under the display-lg headline. Updated the cream-text conditional to also trigger when $has_image is true (matching the title/eyebrow logic) and dropped p-xl so the subtitle inherits the default <p> size (18px desktop / 16px mobile). Affects every page_hero subtitle, including search.php. Shipped in commit 9b74a6e.

Shipped (parallel agent same day): - AJAX Load More for project category archives (commit 6cb5aec). - hide_from_public toggle for project categories (commit e4ee724). - In-site Training Guide page — password-protected client documentation (commit 9b74a6e). - Mock 2 Landscaping page variants for client review (Todoist card moved to Complete).

Cards moved to Complete (Todoist): - 🐛 GLightbox zoom button distorts view - 📋 Audit and update site CTAs with real conversion copy - Why Us: replace community engagement images with links - Add favicon - Confirm and swap Jonathan headshot if updated (no-op) - ✨ Add general GSAP animations across the site (pass 1)

Cards still Ready: - Logo refinement (design / Illustrator task) - Draft captions for Our Work projects (Specificity / Location / Differentiator) - 🧹 Audit all pages for client-editability

Cards in Launch Queue (pre-launch): - 🚧 Verify noindex is OFF on prod before launch - ✨ Upload 1200×630 OG image to Yoast

Skill / process changes: Hardened the global Todoist skill with a top-of-file MANDATORY rule on claiming a card to In Progress before any work — Eric flagged that another agent had been picking up cards I'd left in Ready while I was reading code. Saved a feedback memory (feedback_claim_card_first.md) so the rule sticks across future sessions.

Status: Phase B/C content fixes are largely converging. Site has real SEO, real CTAs, real animations, and is closer to launch-ready. Remaining ready work is mostly content (captions, editability audit) plus the design-side logo refinement.

Session close-out

Cards shipped in the evening Claude run (10): - Slot 9 photos (4 replacements + 5 new) · Hidden taxonomy toggle · AJAX Load More · Why Us community links (link_list module) · 2 Landscaping page variants · Favicon · Jonathan headshot (verified, no-op) · In-site Training Guide · Editability audit · Strip hardcoded Our Work testimonial

3 follow-up cards filed from the editability audit: - ✨ Build Theme Settings ACF Options Page — single source of truth for contact, footer intro, social URLs, header CTA. Blocked on canonicalizing the email (hello@rootstructure.com vs rootstructureomaha@gmail.com). - ✨ Convert header + footer nav to WP nav menus — depends on Theme Settings. - ✨ Replace hardcoded Our Work testimonial — already shipped same session (e12b9b2).

Infra wins: - trunk-guard hook authored, wired into both settings.json files, promoted to Phase B (block-mode) persistently via ~/.zshrc. PreToolUse on Bash, fires on git commit, blocks if branch ≠ main/master. Bypass per-command with CLAUDE_TRUNK_GUARD=off git commit .... Hook script at ~/.claude/hooks/trunk-guard.py (hardlinked to ~/.claude-royal/hooks/). - Dev tools updated — pulled latest to gain Module Spacing tool, ajaxUrl proxy fix, prod-visitor gating, popover fix. Local element_picker config preserved. inc/dev-tools/ added to theme .gitignore (commit 5ac27e7) since it's an independently-versioned sub-repo. - Editability audit doc at CLIENT-EDITABILITY-AUDIT.md — full per-page punch list + remediation plan in 4 phases.

Outstanding for next session: - Captions for ~30 Our Work projects. - The Theme Settings options page (after Chris confirms canonical email). - Logo refinement (Eric's design task, Illustrator). - Two Landscaping variants live for client comparison — need to send Chris the URLs.


2026-05-07 — New content drop from Chris + Todoist project scaffolded

Inbox sweep findings: - Apr 17 — Chris shared Jonathan.JPG (1JMop67egHID95hn1ZzHlhM2LLfkiayZj). Phase A used WP attachment 332; need to compare and swap if updated. - Apr 23 — Chris shared "Website Photots" folder (18Jwg7MqlyBUipsUurTT4CykOQ_Vb2e-3) with 9 replacement photos for the previously-missing/red items, plus left two comments on the Website Notes Google Doc: 1. Landscaping page — partner is asking for two layout variants: one matching the Our Work format, and one with the 3 pictures + interleaved statements (current). Build both for selection. 2. Why Us community engagement — skip pictures for now, just link to partner sites (BFF, City Sprouts, Exist Green, Omaha Parks Foundation, Sheltering Tree, Tri-Faith Community).

New Drive folder contents (9 files in 18Jwg7MqlyBUipsUurTT4CykOQ_Vb2e-3): - Floating deck/pergola/woven/cedar #2 - Mailbox, cedar.jpg - Pergola, pine, cantilever deck, composite - Pergola, trellis, cedar - Retaining wall, alternating block size.jpg - Retaining wall, large blocks, sienna.jpg - Woven, deck boards, cedar, stain #2 - planter and pergola with trash cache - Trellis in garden box

Setup: - Todoist project scaffolded — Root Structure (6gXpXFFP2hJ24QCP). 10 outstanding tasks loaded covering Phase B + new Apr-23 items.

Status: Next session — work the Todoist Ready section: slot the 9 new photos into Our Work, build Landscaping mockup variant, convert Why Us community section to links, draft captions, adapt logo. Blocked items waiting on Eric's image picks (mission, hero carousel, category previews, mission statement).


2026-04-17 — Content handoff + Phase A population + Drive organized

Chris shared a Google Doc with updated copy and image lists for Main Page, Our Work, Why Us, About, FAQs, and confirmed Team. Full reference saved at CONTENT-TO-ADD.md.

Shipped same-day: - Meet the Team rebuilt (commit a6387bd, order: Chris, Sebastian, Peter, Jonathan, Reuben); Jonathan's photo added (attachment 332) - Logo variants (BLACK + COLOR) downloaded from Drive to project-notes/rootstructure-images/logo/ - All 6 FAQs replaced with client copy; FAQ page expanded to show all 6 - About stats_grid populated (4 stats: 5 Years, 2/3 Omaha Grown, 100% Satisfaction, 1000s of Feet) - Why Us — hero copy + 3 zigzag blocks (Client Driven / Small Team / Integrity) - Landscaping — 3 new projects with client's supplied copy (Flagstone Succulent, Flagstone Perennial, Native Bed) - Custom Fire Pit category populated (4 projects) — was hidden, now live on Our Work - Wanda G. testimonial created + featured on homepage (plus added to rotation) - Best-guess Our Work picks from Drive: 12 new projects — Decks → 6, Retaining Walls → 6, Fences → 6, Pergola/Arbor → 7, Workshop → 8

Doc workflow: - Highlighted the client's Google Doc with a color-coded legend (green = shipped, yellow = Eric to pick, pink = missing / needs Chris) - Comparison inventory built at ~/.claude/plans/you-have-the-references-ticklish-pearl.md

Drive cleanup: - All Root Structure docs now accessible from the Root Structure folder hub (ID 1nkAMWJsZ3aWtBDU2EoE_bGTfyzRLpd77). Website Notes + Photos linked via shortcuts (Drive API won't swap parents on those). Folder ID recorded in PROJECT-INFO.md and memory.

Status: Next session — work through CONTENT-TO-ADD.md Phase B (Eric picks from Drive for hero carousel, mission pics, category previews, caption drafting) and Phase C items that need Chris (Kimball dog-leg fence, Drea/Fourstenau/Kimball-driveway pergola photos, community engagement photos).


2026-04-06 — Scheduling in-person content review

Chris emailed saying he's been compiling texts and photos and wants to meet in person to finalize everything rather than going back and forth over email. He's driving back to Omaha on April 14 and is available that week. Eric replied with three time options: Friday April 17, Monday April 20, or Friday April 24. Suggested meeting at a coffee shop or the G&M office and asked Chris to bring whatever content he has so far.

Status: Waiting on Chris to confirm meeting time. Dev work paused until content handoff.


2026-03-18 — Design direction approved, dev underway

Chris and team approved the design direction on Mar 16. They like the brown color scheme throughout for continuity. Chris is looking for an alternate logo for the main page (Eric offered to recreate in vector if needed). Chris is working on organizing content — texts, photos, and refining service categories. Eric confirmed he's already been making dev progress and will finalize colors/styles once design phase wraps.

Status: Waiting on Chris's content (text, photos, service categories, possible alternate logo). Dev is underway.


2026-03-09 — Design Loom + Figma sent to client

Eric sent the homepage design overview via Loom walkthrough and Figma prototype. Chris's team was coordinating review across members with different schedules (Chris in CO working daily, Sebastian and Peter in Omaha).

Status: Design review in progress.


2026-03-03 — Chris checked in on status

Chris reached out to see where things stand as their season starts up. Eric responded that he'd been working on design and development all week and would send a Loom update.

Status: Design in progress.


2026-01-11 — Wireframes approved, design phase begins

Chris and team approved wireframes. Chris planned to start compiling site text (mission statement, bios, why us, etc). Eric moved to design phase using filler content, with plan to swap in real content during development.

Status: Moving to design phase.


2026-01-03 — Wireframes sent for review

Eric sent wireframes via Loom walkthrough and Figma prototype. Process milestone: Flowchart (done) > Wireframes (here) > Design Concepts > Final Design > Development > Launch.

Status: Wireframe review.


2025-12-02 — Flowchart approved

Chris confirmed team approved flowchart. They're still discussing text content (Why Us, FAQs, bios, captions) but trust Eric's process. Peter and Sebastian out of country for several weeks.

Status: Flowchart approved, moving to wireframes.


2025-11-17 — Flowchart sent for review

Eric sent the flowchart via Figma prototype and Loom walkthrough. Reminded Chris of the process order: flowchart > wireframes > design > development.

Status: Flowchart review.


2025-11-09 — Fence/wall work complete, invoice settled

Chris sent final invoice. Website cost was included in the trade arrangement. Eric expressed he was thrilled with the fence/wall work.

Status: Trade arrangement settled, website work continues.


2025-10-20 — Timeline shared, Flywheel site created

Eric shared a Google Doc timeline with milestones. Original goal: launch by end of December 2025. Flywheel site provisioned Oct 21.

Status: Project officially kicked off.


2025-10-10 — Contract + trade addendum sent

Eric sent Website Quote and Trade Arrangement Addendum via Dropbox Sign. Payment structure: half up front / half on completion.

Status: Contracts out for signature.


2025-10-01 — Terms agreed, site info shared

Chris agreed to numbers and shared Squarespace login, site feedback, and brand notes. Key feedback: current site is clean/simple but not mobile-friendly, hard to scroll photos, needs FAQs/testimonials, wants a more professional look. Open to Eric's judgment on color/font. Competitor noted: Dee-Sign (gardens only, no woodworking).

Status: Scope agreed, gathering assets.


2025-09-12 — Website estimate sent

Eric sent the $4,960 website estimate. Proposed trade arrangement: Root Structure services ($11,783) minus web services ($4,960) = $6,823 cash from Eric.

Status: Estimate out for review.


2025-06-10 — Initial conversations

Eric and Kristin met with Chris to discuss website and trade for backyard work. Chris provided cell number and came to assess the property.

Status: Discovery / relationship building.


Contents

CONTENT-TO-ADD.md ⭐ Active

Client's updated site content from the April 17 meeting. Includes copy and image lists for every major page plus a todo checklist. This is the next to-do.

PROJECT-INFO.md

Client contact info, credentials, asset links, project scope, budget, trade arrangement, timeline, and client preferences.

timeline.md

Project phases, milestones, and all deliverable links (Figma, Loom, Google Docs).

crawl-reference.md

How we used Cloudflare Browser Rendering /crawl API to extract content from the old Squarespace site. Includes API details, endpoint reference, free plan limits, and a replicable workflow for future client migrations.

Squarespace Crawl Assets

These folders contain raw data extracted from the old Squarespace site on 2026-03-12. See theme docs/CONTENT-MIGRATION.md for how this data was used to populate WordPress.

Folder Contents
rootstructure-crawl/ Raw crawl markdown (13 pages) + crawl-full.json
rootstructure-images/ All site images by category (48 files, ~51MB)
rootstructure-seo/ SEO metadata per page (JSON per page + master CSV/JSON)

rootstructure-images breakdown

Folder Count Contents
logo/ 1 White BG logo PNG
home/ 1 Homepage hero image
team/ 3 Chris, Peter, Sebastian profiles
fences/ 5 4 portfolio + cover
patio-design/ 6 5 portfolio + cover
decks/ 4 3 portfolio + cover
workshop/ 6 5 portfolio + cover
retaining-walls/ 5 4 portfolio + cover
custom-fire-pit/ 6 5 portfolio + cover
landscaping/ 11 10 portfolio + cover

Archive

Older, completed items moved to archive/:

Item Date Why Archived
wireframe-gap-analysis.md Jan 3, 2026 Wireframes approved, theme built from analysis
root_structure_wireframes/ Jan 3, 2026 12 wireframe PNGs, all implemented
images/ Feb 14, 2026 Design-phase hero candidates and services images