zsty.us

Before / After · Case Study

Let's Go Paint Foundation — a charity site built so it can't break its own rules

  • Nonprofits & Causes
  • Painting & Trades

The paint studio's charitable arm needed its own public home — one that could never blur the line with the for-profit business or promise tax deductions the IRS hasn't granted yet. Both rules are baked into the site itself, with donation plumbing built and staged for the day the approval letter arrives.

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

At a glance

What this rebuild covers.

  • Security

    The charity and the for-profit studio live in completely separate systems, so donor money and business sales can never mix — the legal boundary is enforced by the architecture, not by someone remembering it.

  • Design

    The design brief started with what the site must never say — no paint-party sales anywhere, no overclaimed tax benefits — and the 21 pages of programs, giving and governance were built around those constraints.

  • Selling & payments

    Donation checkout is built and staged but held back until the charity's tax approval lands, so the site never takes money under promises it can't yet keep.

  • Email

    Every donation receipt and giving page carries honest pending-approval wording instead of the standard deductibility boilerplate — the truth about the charity's tax status is written into the templates.

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
  • 21 pages mapped before build
  • 2 legal entities, cleanly separated
  • 0 premature tax-deduction claims
  • Donations staged, ready to switch on

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.

For the technically curiousHow it was done
  1. 01

    Where it started

    The foundation — a nonprofit bringing paint programs to communities — existed as a legal entity with no web presence at all. The boundary between the charity and the commercial paint-party studio existed only on paper, and the studio's own sites all live in one shared commercial codebase.

  2. 02

    What could go wrong

    Two traps were waiting. Building the foundation site inside the commercial codebase would blur the entity line — shared checkout, shared catalog, exactly the commingling a regulator could read as private benefit. And standard donation boilerplate ('tax-deductible to the extent allowed by law') would overclaim deductibility while the IRS determination is still pending, a compliance mistake young nonprofits make constantly.

  3. 03

    The rebuild

    The site went into its own standalone repository, deliberately outside the commercial codebase, so the corporate separation is structural rather than editorial. A 21-route sitemap was mapped from the foundation's locked v6 content document before any code was written — programs, impact, governance, giving, contact — then built on our hosting platform with a managed database, validated forms with transactional email, and privacy policy and terms shipped from day one.

  4. 04

    What runs now

    The site is complete to its first-phase scope. Both guardrails are enforced in code: there is no paint-party sales surface anywhere in the 21 routes, and every receipt and giving page carries pending-IRS-determination language instead of deductibility claims. Donation payment rails are wired and staged, waiting on the operator to activate them.

  5. 05

    What happens next

    The foundation's domain attaches when the operator flips it, and the day the IRS determination letter arrives the receipt language upgrades to full deductibility copy — a one-line change, because the constraint was modeled from the start rather than patched in later.

Architecture

Old stack
  • No site
  • Paper-only entity boundary
New stack
  • modern web framework
  • 21-route sitemap (v6 content doc)
  • Pending-IRS receipt language
  • No-sales guardrail
  • Stripe donations (staged)

What changed, with evidence

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 charity site built so it can't break its own rules — zsty.us