System Design
Practice architecture decisions with guided lessons, interactive diagrams, and simulations.
Design a Rate Limiter
Traffic Control
Throttle requests per user or IP using token bucket, sliding window and distributed counters.
Design Pastebin
Storage
Store and share text snippets with expiry, using object storage and a metadata database.
Design a Unique ID Generator
Distributed Systems
Generate globally unique, roughly time-ordered IDs across many machines (Snowflake style).
Design a Notification System
Messaging
Send push, SMS and email notifications reliably with queues, retries and user preferences.
Design a Distributed Cache
Storage
Build a Redis-like cache with eviction policies, consistent hashing and replication.
Design a Job Scheduler
Distributed Systems
Run delayed and recurring jobs at scale with exactly-once-ish execution and failure recovery.
Design a Chat and Messaging App
Real-Time Systems
One-to-one and group chat with real-time delivery, offline sync, read receipts and presence.
Design a News Feed
Social Systems
Generate personalised feeds using fan-out on write, fan-out on read and hybrid approaches.
Design Typeahead Autocomplete
Search
Return top suggestions in milliseconds as the user types, using tries and offline aggregation.
Design a Web Crawler
Search
Crawl billions of pages politely with URL frontier, deduplication and distributed workers.
Design File Storage and Sync (Dropbox)
Storage
Sync files across devices using chunking, deduplication, delta sync and conflict resolution.
Design Video Streaming (YouTube / Netflix)
Media Systems
Upload, transcode and stream video globally with adaptive bitrate and CDNs.
Design a Ride-Hailing Service (Uber)
Geo Systems
Match riders with nearby drivers in real time using geospatial indexing and live location updates.
Design a Distributed Key-Value Store
Storage
Build a Dynamo-style store with partitioning, replication, quorum reads and writes, and failure handling.
Design a Distributed Message Queue (Kafka-like)
Messaging
Durable, ordered, high-throughput messaging with partitions, consumer groups and offsets.
Design a Ticket Booking System
Transactions
Prevent double booking under heavy concurrency with seat locking, holds and payment timeouts.
Design a Distributed Lock Service
Consensus
Provide safe mutual exclusion across machines using leases, fencing tokens and consensus.
Design a Payment System
Transactions
Process payments correctly with idempotency, ledgers, reconciliation and failure recovery.
Design an Ad Click Aggregator
Data Pipelines
Count billions of clicks accurately in near real time with stream processing and late-event handling.
Design a Metrics and Monitoring System
Data Pipelines
Collect, store and query time-series metrics with alerting, downsampling and retention.
Design a Collaborative Editor (Google Docs)
Real-Time Systems
Let many users edit one document live using operational transform or CRDTs, with history and presence.
Design a Distributed File System (GFS / HDFS)
Storage
Store petabytes across commodity machines with a metadata master, chunk replication and recovery.
Design a Stock Exchange
Low-Latency Systems
Match orders with strict fairness and microsecond latency using an order book and sequencer.
Design a Multi-Region Active-Active Architecture
Architecture
Capstone: serve users from several regions with replication, failover, data residency and conflict handling.