A production donation platform that survives real payment traffic.
01 / The problem
Most personal fundraising pages are static and trust-poor: no receipts, no verified payment state, no visibility into whether a donation actually succeeded.
02 / The architecture
Built on Next.js 14 with a Postgres-backed Supabase layer for donation records, Flutterwave for payment processing, and signature-verified webhooks as the single source of truth for payment state — never the client. Resend handles transactional receipts. Every webhook event is idempotently reconciled against the donations table to prevent double-counting under retries.
03 / The challenges
Payment webhooks arrive out of order and sometimes twice. The real work was making every write idempotent so a retried webhook could never double-credit a donation.
04 / The results
Shipped to production and processed real donations with zero payment-state discrepancies; page load and Core Web Vitals tuned for mobile-first traffic.
05 / The lessons
Never trust payment state from the client — treat the webhook, signature-verified, as the only source of truth, and design the schema so replays are safe by construction.
06 / Metrics
0
Payment reconciliation errors
96
Mobile Lighthouse score
07 / Tech stack
Open to internships, founding-engineer roles, and focused contract work in cloud, data, and AI products.