Backend practice on realistic problems.
01 pick a project 02 build on your machine 03 break it and write it up
By signing in you agree to the privacy policy.
$ make up
✓ the service is up
✓ the load generator is ready
# then, on purpose:
Send one charge body twice with the same idempotency key. Compare the two responses, then list what was stored with `GET /charges`, the local inspection endpoint.
- D1 Both responses describe the same charge, and `GET /charges` lists it once.
- D2 The summary ends with `charges=1 duplicate_charges=0`.
- D3 The second request gets a conflict, and the first charge is still the only one for that key.
record what happened, then write it up
Pick something to build or fix.
The payment that happened twice
A mobile carrier dropped responses mid-checkout, the apps retried, and 17 customers paid twice. Make the charge endpoint safe to retry.
The reports that slowed Tuesday
A report filter shipped on Monday, and on Tuesday morning finance reports started timing out. Find out why, fix it, and show the p99 coming back down.
The quota that multiplied
Three API instances each kept their own count, and one merchant blew through its limit. Make the limit hold across all of them.
The orders that never reached the warehouse
Checkout kept taking orders while the broker was down, and 37 of them never reached the warehouse. Make the handoff survive an outage and a repeated delivery.
Twice the shipping email
After a worker restart, SouthRoute customers got the same shipping email twice. Trace the delivery, restore one email per event, and show the duplicate count at zero.
The API nobody could see inside
Lumen Home found out about a catalog outage from customer tickets. Make the service show its four golden signals, and page someone before the next outage spreads.
The checkout prices that vanished after a deploy
A deploy flushed Mira's price cache and the checkout fell over on the rush of misses that followed. Make cold reads safe, measure them, and keep checkout usable when Redis goes away.
The notification queue that made OTPs wait
A newsletter backlog made Bellbird's login codes wait while providers failed and throttled. Get urgent messages through, lose nothing, and measure it.
The wallet that spent the same credit twice
One Hearth customer spent the same wallet credit twice and ended up below zero. Reproduce the negative balance, work out whether the slow PSP is involved, and restore the invariant.
Tasks, with accounts
A design studio lost a deadline to a shared spreadsheet. Build them a task list where each person signs in and sees only their own, from an empty repository to a URL they can open on a phone.
The URL shortener
One system, grown step by step: short links for a grocery shop's SMS campaigns, from the first redirect to a campaign that brings a million clicks. Each step starts from the repository you shipped in the one before.
any stack · deploy every step
Nothing matches that filter yet.