Design a Charity Donation Website
Company: Whatnot
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Technical Screen
Design a charity donation website that allows donors to make one-time or recurring donations to charitable campaigns. The site should integrate with a third-party payment processor to handle card payments. Because payment processing and downstream donation fulfillment can be slow or unreliable, the design should emphasize asynchronous processing with a message queue.
Cover the following:
- Core user flows for donors and charity administrators.
- APIs and data model.
- How to integrate safely with the third-party payment vendor.
- How to use queues for asynchronous payment confirmation, receipt generation, email notifications, and analytics updates.
- How to handle retries, idempotency, duplicate webhooks, failed payments, and eventual consistency.
- Scalability, reliability, observability, and security considerations.
Quick Answer: This question evaluates system design competency in building payment-enabled web applications, emphasizing asynchronous processing, message queuing, API and data-model design, idempotency and retry strategies, secure payment integration, and operational concerns like scalability, reliability, and observability.