zsty.us

Before / After · Case Study

Let's Go Paint Foundation — a 501(c)(3) site built inside compliance guardrails

  • Nonprofits & Causes
  • Painting & Trades

The letsgopaint.org foundation is a separate legal entity from the Let's Go Paint studio LLC — a nonprofit bringing paint programs to communities — which is exactly why its site is a standalone Next.js 15 repo outside the commercial monorepo. The build maps a 21-route sitemap from the foundation's v6 content document, ships privacy/terms, and enforces the two guardrails that keep a young nonprofit honest: no paint-party sales anywhere on the foundation surface (that's the LLC's business, and mixing them endangers the exemption), and donation receipt language that correctly reflects pending-IRS-determination status instead of promising deductibility the entity doesn't yet have.

A foundation site's first job is to not endanger the exemption — the design brief starts with what it must never say.

Receipts — measured

Numbers that moved.

0
Routes mapped from the v6 content doc
was 0
1
Legal entities correctly separated in infrastructure
was 1
0
Deductibility claims made before IRS determination
was 0
  • Separate entity, separate repo — the corporate boundary is an architecture decision
  • 21-route sitemap mapped from the v6 content doc
  • Pending-IRS receipt language enforced — no premature deductibility claims
  • No paint-party sales on the foundation surface, by rule

The story

Problem · Insight · Build · Outcome.

  1. 01 · Problem

    A nonprofit arm with no surface — and real ways to get it wrong.

    The foundation needed a public face for programs and giving, but a naive build inside the commercial monorepo would blur the entity line, and standard donation boilerplate would overclaim deductibility while IRS determination is pending.

  2. 02 · Insight

    Compliance constraints first, design second.

    Start from what the site must never do — sell paint parties, promise deductibility — and encode those as structural rules (separate repo, template-level receipt language) rather than editorial guidelines someone has to remember.

  3. 03 · Build

    Standalone Next.js 15 repo, 21 routes, staged donation rails.

    Next.js 15 + Tailwind v4 + Drizzle/Neon with Stripe donations staged and Resend/Zod on forms. The 21-route sitemap comes straight from the v6 content doc; privacy and terms are live; Phase 2 (content fill + rails activation) is gated on the operator.

  4. 04 · Outcome

    Preview-complete, waiting on determination + apex.

    The site is built to its Phase-1 scope. The apex letsgopaint.org attaches when the operator flips it, and the receipt language upgrades itself to full deductibility copy the day the IRS letter arrives — a one-line change, because the constraint was modeled.

Architecture

One chain replaced by another. Receipts above.

Old stack
  • No site
  • Paper-only entity boundary
New stack
  • Standalone Next.js 15 repo
  • 21-route sitemap (v6 content doc)
  • Pending-IRS receipt language
  • No-sales guardrail
  • Stripe donations (staged)

What changed

Grouped by what kind of system shipped.

Each claim ships with concrete evidence — env vars, table names, cadence chips. No marketing fluff.

Retention

The entity boundary is enforced by the repo layout

The foundation is a 501(c)(3)-track nonprofit; the paint-party studio is Faith's LLC. Housing the foundation site in its own standalone repo — outside the commercial headless monorepo — makes the corporate separation structural: no shared checkout, no shared catalog, no accidental commingling a regulator could read as private benefit.

Before
One brand family, one codebase, blurred entity lines waiting to happen.
After
Two entities, two repos; the boundary can't erode by convenience.
Design

Receipt language that tells the truth about IRS status

Until the IRS determination letter lands, donations aren't verifiably deductible — so every receipt and giving surface carries pending-determination language instead of the standard 'tax-deductible to the extent allowed by law' boilerplate. The compliance nuance most young nonprofits get wrong is enforced in the templates.

  • Pending-IRS-determination language on all receipt + giving copy
  • Privacy policy + terms shipped
  • No paint-party sales surface anywhere in the 21 routes
Agent backbone

A 21-route sitemap driven from a locked content document

The full information architecture — programs, impact, governance, giving, contact — was mapped from the foundation's v6 content doc into 21 routes before build, the same locked-plan discipline as the brochure-to-site skill: decide once, then execute without drift.

← All rebuilds

Let's Go Paint Foundation — a 501(c)(3) site built inside compliance guardrails — zsty.us