Skip to content

About

A curated collection of resources, case studies, tools, and roadmaps to help you go from system design beginner to confidently architecting large-scale distributed systems.

Resources

Stars

194 stars

Watchers

1 watching

Forks

Latest commit

Β 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 

Repository files navigation

System Design Kit βš™οΈ

A curated collection of essential resources, case studies, tools, courses, and playbooks to help you master System Design β€” from designing your first API to architecting distributed systems that scale to millions of users.

GitHub Description: A curated collection of resources, case studies, tools, and roadmaps to help you go from system design beginner to confidently architecting large-scale distributed systems.

PRs Welcome License: MIT


About

System design is the skill that separates a good engineer from a great one.

This is a curated directory of the best system design resources for every stage of your journey β€” from understanding client-server architecture to designing systems like YouTube, WhatsApp, and Uber at scale. Whether you're a student preparing for FAANG interviews, an engineer leveling up, or an architect designing production systems, you'll find books, courses, case studies, tools, and communities for every level.


Who Is This For?

  • Students β€” Preparing for SDE interviews at product companies
  • Backend Engineers β€” Leveling up from writing code to designing systems
  • Senior Engineers β€” Preparing for Staff / Principal interviews
  • Engineering Managers β€” Understanding trade-offs in architectural decisions
  • Founders & CTOs β€” Making the right architectural bets early
  • Anyone who wants to think in systems, not just code

What's Inside?

  • Roadmaps β€” Step-by-step paths from basics to advanced
  • Foundational Concepts β€” Networking, protocols, and distributed systems basics
  • Scalability β€” Horizontal/vertical scaling, load balancing, and caching
  • Databases β€” SQL vs NoSQL, sharding, replication, and CAP theorem
  • Caching β€” Strategies, invalidation, CDN, and Redis patterns
  • Messaging & Queues β€” Kafka, RabbitMQ, and async communication
  • API Design β€” REST, GraphQL, gRPC, and WebSockets
  • Storage & File Systems β€” Object storage, blob storage, and CDNs
  • Microservices β€” Service decomposition, communication, and patterns
  • Security at Scale β€” Auth, rate limiting, and DDoS protection
  • Reliability & Availability β€” Fault tolerance, SLAs, and disaster recovery
  • Monitoring & Observability β€” Metrics, logs, traces, and alerting
  • Real-World Case Studies β€” How top companies built their systems
  • Interview Prep β€” Frameworks, templates, and practice problems
  • Books & Courses β€” The best learning resources
  • Tools β€” Diagramming, load testing, and architecture tools

πŸ“‹ Table of Contents


Roadmaps


Foundational Concepts

Networking Basics

Client-Server Architecture

Proxies


Scalability

Core Concepts

Performance


Load Balancing

Concepts & Algorithms

Tools & Implementations


Caching

Concepts & Strategies

Tools

CDN


Databases

SQL vs NoSQL

Relational Databases

NoSQL Databases

NewSQL

Data Warehouses


Replication & Sharding

Replication

Sharding

Partitioning


CAP Theorem & Consistency

Fundamentals

Consensus Algorithms


API Design

REST

GraphQL

gRPC

WebSockets & Real-time

API Gateway


Messaging & Event Streaming

Message Queues

Event Streaming

Patterns


Microservices Architecture

Fundamentals

Communication

Resilience Patterns

Data Patterns


Storage & CDN

Object Storage

Blob Storage Design

Distributed File Systems


Search Systems


Rate Limiting & Throttling

Algorithms

Implementations


Authentication & Authorization at Scale

Authentication

Authorization

Tools


Reliability & Fault Tolerance

Concepts

Patterns

Tools


Monitoring & Observability

The Three Pillars

Metrics

Logging

Distributed Tracing

Alerting


Distributed Systems Concepts

Core Papers & Concepts

Key Concepts

Courses


Real-World Case Studies

Social Media & Communication

Video & Media

Ride-sharing & Maps

E-commerce & Payments

Search & Data


System Design Interview Prep

Frameworks & Approaches

Estimation & Calculations

Common Problems to Practice

  • Design a URL Shortener (TinyURL / Bit.ly)
  • Design Twitter / X Feed
  • Design WhatsApp / Messenger
  • Design YouTube / Netflix
  • Design Uber / Ola (Ride Sharing)
  • Design Google Drive / Dropbox
  • Design Instagram
  • Design a Search Autocomplete System
  • Design a Web Crawler
  • Design a Notification System
  • Design a Rate Limiter
  • Design a Distributed Cache
  • Design an API Gateway
  • Design a Payment System
  • Design a Ticketing System (BookMyShow)
  • Design a Job Scheduler
  • Design a Live Streaming System
  • Design a Distributed Message Queue
  • Design Google Maps
  • Design a Leaderboard System

Resources for Practice


Books

Core System Design Books

Distributed Systems

Architecture & Patterns

SRE & Operations


Courses & Videos

Free Courses & Playlists

Paid Courses

YouTube Channels


Cheat Sheets & Quick References


Diagramming & Architecture Tools

Diagramming

Load Testing

Network & API Tools


GitHub Repositories


Engineering Blogs

Must-Read Company Blogs


Newsletters & Podcasts

Newsletters

Podcasts


Communities & Forums


Key Articles & Essays

Must-Read

Architecture Thinking


Practice Problems

Beginner Systems

  • Design a URL Shortener
  • Design a Pastebin
  • Design a Key-Value Store
  • Design a Rate Limiter
  • Design a Cache System

Intermediate Systems

  • Design a Chat Application (WhatsApp)
  • Design a Social Media Feed (Twitter)
  • Design a Photo Sharing App (Instagram)
  • Design a File Storage System (Dropbox)
  • Design a Video Streaming Service (YouTube)
  • Design a Notification System
  • Design a Search Autocomplete

Advanced Systems

  • Design Uber / Ola
  • Design a Distributed Message Queue (Kafka)
  • Design a Distributed Cache (Redis)
  • Design a Web Crawler
  • Design Google Maps
  • Design a Payment System
  • Design a Live Video Streaming System (Twitch)
  • Design an Ad Click Aggregation System
  • Design a Hotel Booking System (MakeMyTrip)
  • Design a Flight Booking System
  • Design a Stock Exchange System
  • Design a Distributed Job Scheduler

🀝 Contributing

We welcome contributions from the community! Here's how you can help:

  1. Add a Resource β€” Found a useful library, course, or article? Submit a pull request!
  2. Fix Broken Links β€” Help keep the list current
  3. Improve Descriptions β€” Make resources easier to understand
  4. Suggest Categories β€” Help us organize better

Contribution Guidelines

  • Ensure the resource is relevant to Python development
  • Provide a working link
  • Add a brief description if needed
  • Place it in the appropriate category
  • Check for duplicates before submitting

Sponsorship

If you find this repository valuable and want to support its growth:

  • Sponsor this project to help maintain and expand the collection
  • Partner with us to feature high quality tools for founders
  • Reach out for collaborations and ecosystem partnerships

For sponsorship or partnership inquiries, connect via X:
Avinash Singh

πŸ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

This repository is maintained by Avinash Singh Special thanks to all contributors who have helped curate and maintain this collection.

πŸ’¬ Community & Support

  • Star this repo to show your support
  • Share it with fellow founders and entrepreneurs
  • Follow for updates as we add new resources
  • Join the discussion in Issues

Made with ❀️ by Avinash Singh

About

A curated collection of resources, case studies, tools, and roadmaps to help you go from system design beginner to confidently architecting large-scale distributed systems.

Resources

Stars

194 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors