Write the design doc and defend the tradeoffs
Continues from the last build: Eleven rungs of scattered notes: capacity math, an API, a cache, a stateless tier, replicas, shards, a rate limiter, an analytics queue, edge caching, idempotency, and a DR plan, none of it stitched together yet.
The system survived a region loss last rung with a warm standby and a 5 minute RPO.
What you'll build
A single design document with requirements, capacity math, the final architecture, a complete ADR log, a bottleneck analysis naming the first thing to break at 10x load, and a tradeoffs section that defends every major decision against a real alternative, tested against a mock interview Q&A.
See how we teach, before you sign up
You don't just get code dumped on you. Every starter file and every solution is explained line-by-line, in plain English. Here's one real file from this project:
# Linkly System Design Document ## 1. Problem Statement and Requirements ## 2. Capacity Estimates ## 3. API and Data Model ## 4. Final Architecture ## 5. Key ADRs (see adr-log.md) ## 6. Bottleneck Analysis: What Breaks First ## 7. Tradeoffs Defended ## 8. Failure Modes and Mitigations ## 9. Mock Interview Q&A ## 10. Future Work
Reading this file
## 1. Problem Statement and RequirementsAlways first. A doc that opens with architecture has skipped scoping.## 6. Bottleneck Analysis: What Breaks FirstThe section most design docs skip, and the one interviewers probe hardest.## 7. Tradeoffs DefendedNot a components list, a defense of each choice against its alternative.## 9. Mock Interview Q&AProof the doc survives being questioned out loud, not just read silently.
The skeleton for the final document. Fill each heading, do not reorder them, interviewers expect requirements and numbers before architecture.
That's 1 of 8 explained code blocks in this single project.
The build, milestone by milestone
- 1
Nail the requirements and the numbers
4 guided stepsEvery senior candidate who fails a system design interview fails here first: they jump to boxes and arrows before anyone agrees what the system needs to do or how big it is. A doc that skips this section cannot be graded on anything else, because the reader does not know what "correct" means for this design.
- 2
Redraw the final architecture end to end
4 guided stepsAn interviewer reading a stitched-together diagram can tell within seconds whether the candidate actually understands how the pieces connect, or just remembers a list of buzzwords. The inventory table is what proves the former.
- 3
Compile the ADR log and defend every tradeoff
4 guided stepsThis is the section that separates a components list from a design document. Anyone can name Redis and Kafka. Only someone who understands the system can say why they chose async replication over synchronous writes and what they gave up to get it.
- 4
Find what breaks first at 10x
4 guided steps"What breaks first at 10x" is the single most common follow-up question in a system design interview, and the one most design docs cannot answer because they never ran the math past current scale.
- 5
Run the mock interview and tighten the final doc
4 guided stepsA design doc that has never been questioned out loud is untested. The mock interview is where a reader finds the gaps: components with no failure mode, tradeoffs with no real alternative, a bottleneck claim with no number.
What's inside when you start
You'll walk away with
This is portfolio-grade. Build it free.
Sign up to unlock every milestone step-by-step, the code skeletons, full reference solutions, and checkable tasks, with your progress saved as you build.
Start building