Capstone 10 · Backend
The Switchboard
Services send webhooks. Receiving them reliably is harder than it looks, and most applications get it wrong quietly. Build the thing that gets it right. It accepts incoming events, verifies their signature so it cannot be fed forgeries, stores them, and delivers each one to every registered subscriber. Delivery fails constantly in reality: a subscriber is down, slow, or returns a 500. So it retries with exponential backoff and jitter, gives up after a bounded number of attempts, and puts the failures somewhere a person can see and replay them. The requirements that make it real: accept an event once even if the sender delivers it three times, which means deduplicating on the sender's event id. Never lose an accepted event. Respond to the sender fast, which means accepting and queueing rather than delivering inline. Keep a delivery log per subscriber so somebody can answer 'did that arrive'. This is unglamorous and it is exactly the kind of thing a backend interview goes deep on.
Concepts used
Your dataset
A generator that produces events at a configurable rate, plus a subscriber you can make fail on demand.
Milestones
The graded core
The rest of this project is yours to shape. This one function is the piece everything else depends on, so it runs against hidden tests to prove it is right before you build outward.
Your workspace
Build the full project here. Work through the milestones in order, in both languages.