{"id":51123484,"url":"https://github.com/shiningflash/system-design","last_synced_at":"2026-06-25T05:01:41.294Z","repository":{"id":359686713,"uuid":"1247046779","full_name":"shiningflash/system-design","owner":"shiningflash","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-23T00:02:54.000Z","size":551,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-23T01:18:53.780Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shiningflash.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-22T21:00:00.000Z","updated_at":"2026-05-23T00:02:58.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/shiningflash/system-design","commit_stats":null,"previous_names":["shiningflash/system-design"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/shiningflash/system-design","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiningflash%2Fsystem-design","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiningflash%2Fsystem-design/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiningflash%2Fsystem-design/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiningflash%2Fsystem-design/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shiningflash","download_url":"https://codeload.github.com/shiningflash/system-design/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shiningflash%2Fsystem-design/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34760219,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-25T05:01:40.276Z","updated_at":"2026-06-25T05:01:41.287Z","avatar_url":"https://github.com/shiningflash.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# System Design Practice Problems\n\n\u003e Interview-style system design questions with the ambiguity, follow-ups, and judgement calls of a real onsite.\n\nMost system design content reads like a textbook. Real interviews don't. The interviewer drops a vague prompt, you ask clarifying questions, you sketch, they push back, you redesign. This repo is built around that loop.\n\n## What makes this different\n\nEach problem has two files:\n\n- **`question.md`**. The interview scene. A short prompt from the \"interviewer\", clarifying questions you should ask, capacity-estimate math you must do, a **partial architecture diagram you complete yourself**, then five to ten follow-up scenarios. Most steps have a `\u003cdetails\u003e` block you reveal only after attempting the step yourself.\n- **`solution.md`**. The full deep dive. API design, data model, sharding strategy, read/write paths, cache invalidation, geo distribution, observability, trade-offs, the most common follow-up answers, and the mistakes weak candidates make.\n\nYou won't get the most out of this by reading the solution first. The point is to sit with the question, sketch the diagram, do the math, *then* compare.\n\n## What's inside\n\nThe set covers two skill levels. **Problems 1 to 10** are the classic Medium/Hard onsite questions. **Problems 11 to 20** are entry-level questions that show up in junior interviews and walk the design from 10 users to 1 million users explicitly.\n\n| # | Problem | Category | Difficulty |\n|---|---------|----------|------------|\n| 1 | Design a URL Shortener | Basics | Medium |\n| 2 | Design a News Feed (Twitter) | Social \u0026 Feeds | Hard |\n| 3 | Design a Chat System (WhatsApp) | Real-Time Communication | Hard |\n| 4 | Design a Rate Limiter | Reliability | Medium |\n| 5 | Design Typeahead / Autocomplete | Search | Medium |\n| 6 | Design YouTube / Netflix | Streaming | Hard |\n| 7 | Design Uber / Lyft | Geospatial | Hard |\n| 8 | Design a Web Crawler | Distributed Systems | Hard |\n| 9 | Design a Distributed Cache | Distributed Systems | Medium |\n| 10 | Design a Notification System | Messaging | Medium |\n| 11 | Design an Approval Management Service | Workflow | Easy |\n| 12 | Design a Shopping Cart Service | Session State | Easy |\n| 13 | Design a Todo List with Sharing and Collaboration | Collaboration | Easy |\n| 14 | Design a Coupon Code Redemption System | Concurrency | Easy |\n| 15 | Design a Comment System (Threaded + Voted + Moderated) | User Content | Easy |\n| 16 | Design a Load Balancer | Networking | Easy |\n| 17 | Design a Read-Heavy System (Patterns Walkthrough) | Patterns | Easy |\n| 18 | Design a Write-Heavy System (Patterns Walkthrough) | Patterns | Easy |\n| 19 | Design a Help Desk Ticketing System (Zendesk basic) | Workflow | Easy |\n| 20 | Design a File Upload \u0026 Share Service (Dropbox-lite) | Storage | Easy |\n\nSee [PROBLEMS.md](PROBLEMS.md) for the live index (generated from each problem's frontmatter).\n\n## How to use this repo\n\n1. Pick a problem. Don't read the solution.\n2. Open `question.md`. Read the scene.\n3. Spend 5 minutes asking yourself clarifying questions before peeking at the suggested list.\n4. Do the back-of-envelope math by hand.\n5. Sketch the architecture on paper (or in a text file). Fill in the placeholders in the partial diagram.\n6. Work through the follow-ups. Write rough answers.\n7. Now open `solution.md`. Compare. Where did you stop too early? Where did you over-engineer?\n\nA 45-minute onsite covers maybe 60% of a single problem here. Treat each as a 90-minute self-paced session.\n\n## Repo layout\n\n```\nproblems/\n  001-url-shortener/\n    question.md      \u003c- interview scene + try-it-yourself prompts\n    solution.md      \u003c- deep walkthrough + follow-up answers\n  002-news-feed/\n    ...\nscripts/\n  build_index.py     \u003c- regenerates PROBLEMS.md from frontmatter\nPROBLEMS.md          \u003c- generated index\n```\n\n## Frontmatter contract\n\nEach `question.md` starts with:\n\n```yaml\n---\nid: 1\ntitle: Design a URL Shortener\ncategory: Basics\ntopics: [encoding, kv store, caching, sharding]\ndifficulty: Medium\nsolution: solution.md\n---\n```\n\nThis contract is what makes the index page on my blog auto-update when I push new problems here. If you fork the repo, keep the contract intact so any tooling around it keeps working.\n\n## Reading order\n\nIf you're new to system design interviews, start with the entry-level set (11 to 20) to build the basic vocabulary. Then move to the medium/hard set (1 to 10).\n\n**Entry-level path** (problems 11 to 20):\n\n1. Load Balancer (16): what an LB actually does\n2. Read-Heavy System (17): caching tiers and replicas\n3. Write-Heavy System (18): buffers, batches, queues\n4. Shopping Cart (12): session state and persistence\n5. Todo List with Sharing (13): real-time collab basics\n6. Comment System (15): nested data and moderation\n7. Coupon Redemption (14): uniqueness under load\n8. Help Desk Ticketing (19): workflow + SLA\n9. Approval Management (11): the canonical workflow engine (flagship)\n10. File Upload \u0026 Share (20): chunked uploads and tiered storage\n\n**Medium/hard path** (problems 1 to 10):\n\n1. URL Shortener (1): read paths, caching, encoding choices\n2. Rate Limiter (4): algorithms with state, distributed counters\n3. Distributed Cache (9): consistent hashing, replication, eviction\n4. Typeahead (5): trie data structure at scale, ranking\n5. Notification System (10): fan-out, retry, deduplication\n6. News Feed (2): push vs pull, hot users\n7. Chat System (3): real-time delivery guarantees, presence\n8. Ride Sharing (7): geospatial indexing, matching\n9. Web Crawler (8): BFS at scale, politeness, dedup\n10. Video Streaming (6): CDN, adaptive bitrate, storage tiers\n\n## Companion blog\n\nEach problem is also published on [amirulislamalmamun.com/practice/system-design/](https://amirulislamalmamun.com/practice/system-design/) with the question on top and the solution hidden behind a Reveal button. Use whichever surface you prefer.\n\n## Contributing\n\nIf you have a system design question that genuinely shows up in interviews and isn't covered here, see [CONTRIBUTION.md](CONTRIBUTION.md). Quality bar is high: each problem must include the full question/solution split, with at least five follow-ups and one partial diagram for the candidate to complete.\n\n## License\n\nMIT. Use the problems freely for self-study, study groups, or interview prep classes. Attribution appreciated but not required.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshiningflash%2Fsystem-design","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshiningflash%2Fsystem-design","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshiningflash%2Fsystem-design/lists"}