Community Hub Network
21 independently branded community-guide sites, each with live local data, lead capture, and automated monthly digests, built to stay legally clear of brokerage advertising rules.
- 21
- live community sites
- 26
- pages per site (20 English + 6 translated)
- 48
- uptime monitors across the network

Problem
Evolve Estates served 21 distinct Florida communities but had no scalable, compliant way to give each one a real local-information presence. A single earlier site (Charles Cove) proved the model — independent, neutral-branded community guides build trust and generate leads — but Florida real-estate advertising rules (FREC 61J2-10.025) forbid attaching brokerage, agent, or listing content to anything framed as a neutral community resource; the moment property listings or IDX search appear on a page like this, it stops being an independent guide and becomes regulated brokerage advertising. Hand-building 21 separate sites with that constraint enforced consistently across every page, every translation, and every future edit was not something a manual content workflow could sustain, and the more common failure mode for this kind of local-content network — events pages and directories that quietly go stale within months — needed to be designed out from the start rather than patched later.
What was built
A generator that produces 21 separate town websites, one per Florida community Evolve serves, each on its own domain with zero Evolve or brokerage branding. Every site carries local information: weather and tropical storm alerts pulled from live NWS/NHC feeds, HOA/CDD guidance, cost-of-living estimates, school-zone lookups, and town-specific pages only that town could have (a live USGS river gauge for Clermont, a county-boundary lookup tool for Davenport, live airport/medical data for Lake Nona). Visitors can leave their email for a lead form or a monthly digest; the sites reply with an automated welcome email and a homepage "this month in {town}" section that only appears once real local news and events have been researched and published for that month. The system runs on a compliance guard that blocks any deploy containing brokerage or agent language, and every page carries a sitewide disclaimer plus a privacy page stating the site is an independent, privately operated resource rather than a resident-run community group.
Technical approach
Two generations exist in this repo. The original (scripts/generate.mjs) is a zero-dependency Node generator that stamps out each site's HTML/CSS/JS from data/communities.json, the single source of truth for all 21 towns' facts, translations, and unique per-town data blocks. As of 2026-07-28 production moved to a rebuilt Next.js 16 static-export engine (engine/) that reimplements the same site behavior in a component-driven motion system (anime.js-driven scroll choreography, per-town brand palettes computed with a WCAG auto-darken guard, and a documented token system in DESIGN_SYSTEM.md). Both trees are required to stay byte-identical for anything that touches the edge — Functions, lead capture, i18n — while intentionally diverging in presentation; a dedicated seo-index-guard.mjs gate exists specifically because that divergence once regressed indexability unnoticed. Each site ships as a Cloudflare Pages project with its own Pages Functions for lead capture, subscribe, and a /api/this-month KV-backed endpoint that only renders when the monthly digest pipeline has actually published something — avoiding stale-content rot rather than filling the slot with placeholder copy. The monthly digest pipeline (nurture.mjs + digest-compose.mjs + digest-publish-kv.mjs) runs on a scheduled job: it drafts branded Resend broadcasts per town, then a headless Claude research pass replaces the draft with month-specific content gated on hard rules — minimum 2 events and 1 news item, a banned-terms grep for brokerage/agent language, and a weekday-vs-ISO-date consistency check per event — falling back to the evergreen draft if any gate fails. Nothing sends without Victor manually clicking send in Resend; the automation only prepares drafts. The CI-style guard script (compliance-guard, originality-guard, css-var-guard, lint) and a large unit-test suite (data integrity, hero-video sourcing, hydration gating, i18n disclaimer parity, motion-capability regression, visual-diff regression) run before any site is considered shippable.
Creative approach
Craft
Each town gets a genuinely distinct visual identity extracted from that city's real municipal branding rather than a shared template with a color swap — an automated palette-distinctness audit measured RGB distance across all 21 sites and caught and recolored three near-identical town-color pairs (lakeland to plum-wine, st-cloud to sunset-sienna, wedgefield to pine-olive) before launch. Hero sections use short muted-loop aerial video per town, generated per-location rather than stock footage, with a brand-tinted scrim and poster fallback so the page still reads correctly before video loads. Every animated element respects prefers-reduced-motion, and the motion-rebuild engine treats scroll choreography as a first-class system with a documented token vocabulary (DESIGN_SYSTEM.md) rather than one-off page effects. Logos are hand-drawn SVGs rather than AI-raster images, chosen specifically because they stay crisp at favicon size and cost nothing to regenerate at scale across 21 sites simultaneously.
Reframe
The non-obvious insight carried over from the Charles Cove precedent: a community site earns trust and leads precisely by NOT being a brokerage site. The constraint (no Evolve name, no listings, no resident-ownership claim) isn't a compliance tax bolted on after the fact — it's the entire mechanism that makes the content credible enough to convert. The second reframe came at scale: rather than authoring 21 towns' worth of local content by hand and letting it rot, the digest pipeline treats "no fresh material this month" as a valid, silent outcome (keep the evergreen draft, don't publish a stale this-month section) instead of forcing content to appear on a calendar regardless of whether anything real happened.
Process and what failed
The repo shows an explicit architectural reversal: the original zero-dependency HTML generator (community-hubs) was fully built, deployed to all 21 domains, and only afterward superseded by a from-scratch Next.js motion rebuild that had to reach feature and compliance parity before cutover. That parity requirement produced a real production incident — on 2026-07-28 a session ran the old generator's deploy command against the already-migrated fleet and silently reverted four towns' Cloudflare Pages projects to ad_hoc / commit_dirty state, undoing verified migration work with no visible breakage (every domain still returned 200). The fix was procedural, not just technical: the old repo's CLAUDE.md was rewritten with a hard stop-and-ask rule before any deploy command runs from that tree. Other real gotchas logged along the way: Cloudflare Pages silently drops dashboard-set plain-text environment variables on redeploy, forcing all lead-routing config into wrangler.toml; Resend's PATCH endpoint nulls out any field omitted from the request body, breaking digest updates until every PATCH resent the full payload; and Pages secrets set via wrangler pages secret put don't take effect until the next deployment, cost a debugging cycle mid-launch.
Outcome
All 21 community sites are live on their own registered domains with working lead capture, verified transactional email delivery (Resend, domain-verified per site), uptime monitoring across the fleet, and a monthly automated digest pipeline that has shipped at least one full cycle (welcome email + "this month" homepage section) to all 21 sites. Each site carries live civic data feeds (NWS weather alerts, NHC tropical tracking, USGS river gauges, county boundary lookups) rather than static copy, and translations (Spanish, Portuguese, Haitian Creole) ship on every site with reciprocal hreflang tags. Track 1 (the same community data surfaced as pages on the main Evolve Estates site) also shipped to production separately. Legal review of the compliance framing was still pending as of the last HANDOFF entry reviewed.