raising·case 08·2026

Qurbani in Albania, food packs in Bosnia, a new campus build - one campaign site, three projects, one £27,589 target. Donors give through an embedded Stripe Payment Element, sponsor individual bricks on an 800-brick wall, or fundraise through personal pages with leaderboards. Money lives as integer pence with database-enforced invariants; brick claims are concurrency-safe under real load.

Scope
Web · Payments · Campaign
Stack
Next.js · Supabase · Stripe · Drizzle · Vercel
Team
2 + client
Shipped
2026

raising·case 08·2026

Balkans Campaign

Web · Payments · Campaign

What it does

Embedded Stripe donations with idempotent webhooks and hourly reconciliation

Sponsor-a-Brick - 800 bricks, race-safe claiming, reservation expiry crons

Gift Aid with immutable snapshots and R68-format HMRC export

Personal fundraiser pages with all-time, weekly and daily leaderboards

Class fundraising competition with auto-generated QR codes

Admin photo tools - face-blur, poster and certificate generators

The craft

Fundraising thermometers that fill as they enter the viewport
Auto-scrolling donor walls with privacy controls enforced at the database
Ease-out-expo reveals with reduced-motion support throughout

Client

Madrasah Vali × Rahma Mercy · registered charity