Campaigns, movements & advocacy

Advocacy sites and creative assets across a movement.

A self-hosted advocacy site with live signups, a design-forward education microsite, and a satirical browser game.

movement toolkit
Sector
Advocacy movement
Engagement
Sites + creative builds
Stack
Next.js · Express · Vanilla JS
Status
Built · live-capable

Context

A movement needed more than one kind of digital asset: a credible flagship advocacy site that could actually capture supporters, a design-forward education page to win over the persuadable, and a creative hook that would travel on its own.

What we built

We built across the range. A self-hosted advocacy site (Express + Postgres, Docker/Coolify) with a live supporter counter, rate-limited email signup, and token-protected admin export, a high-fidelity rebuild packaged to own rather than rent. A statically-exported education microsite (Next.js) with animated counters, an interactive calculator, and conversion CTAs routing into the movement's registration. And a satirical browser game (vanilla JS, Web Audio, a CRT aesthetic): six deliberately unwinnable levels that make an argument and end on a join-the-movement call to action.

The value

  • A coherent digital toolkit replaced a single brochure: a site that captures supporters, a page that persuades, and an asset that travels on its own.
  • The flagship advocacy site is self-hosted and list-exportable, so the movement owns its supporters and its infrastructure outright.
  • The education microsite and satirical game reach and convert people a plain landing page can’t. Top-of-funnel built for sharing.
  • Everything ships fast and is cheap to run (static exports, vanilla JS), advocacy velocity without a heavy stack.
Self-hosted

advocacy site, owned not rented

Static

fast, exportable education microsite

6-level

satirical advocacy game

Live

signup counters + rate limiting

Client name and identifying details withheld by design. Every figure here is drawn from the system we actually delivered.

Your work would get the same discretion.

Tell us what's breaking. We'll tell you whether we've solved something like it. And if we take it on, your name stays yours.

Start with a diagnostic