System Design: 3-day donation campaign
Design an online donation system for a 3-day fundraising campaign.
Requirements
-
Users can donate money to a campaign during the 3-day window.
-
Support common payment methods (e.g., credit card, Apple Pay) via a third-party payment processor.
-
Show donors a confirmation/receipt.
-
Provide an admin/organizer view to track total donations over time.
Scale & reliability assumptions
-
Traffic spikes heavily during the final hours (e.g., 100× normal).
-
Must not double-charge donors.
-
System should tolerate retries/timeouts from clients and the payment provider.
Nice-to-haves (if time)
-
Top donors / recent donations feed.
-
Fraud/spam prevention.
-
Refunds/chargebacks.
-
Multi-currency.
Explain APIs, data model, core components, and how you handle consistency, idempotency, and failure modes.