This repository is a structured guide to learning System Design from the ground up, with organized notes, examples, and practical references. It covers both High-Level Design (HLD) and Low-Level Design (LLD) concepts, focusing on clarity, scalability, and real-world relevance.
System Design is the foundation of building scalable, reliable, and efficient software systems. This repository organizes key topics into sections — from the basics of scalability to real-world design examples like Netflix, Twitter, and chat-apps.
Each topic is concise, complete, and designed to be beginner-friendly yet industry-relevant.
system-design-from-scratch/
├── 00-roadmap/ → Learning path and key resources
├── 01-basics/ → Foundational concepts (scalability, caching, CAP theorem, etc.)
├── 02-components/ → Core system components (API gateway, CDN, proxies, etc.)
├── 03-design-patterns/ → Architectural patterns (Microservices, CQRS, Event-driven, etc.)
├── 04-high-level-designs/ → Real-world system designs (Twitter, Uber, YouTube, etc.)
├── 05-low-level-designs/ → OOP design, SOLID principles, and LLD examples
├── 06-cheatsheets/ → Quick references, FAQs, and interview prep
├── 07-visuals/ → Diagrams, mind maps, and infographics
└── CONTRIBUTING.md → Contribution guidelines
- Start with
00-roadmap/for a guided learning sequence. - Move to
01-basics/and02-components/to build your fundamentals. - Study
03-design-patterns/to understand how large-scale systems are structured. - Explore
04-high-level-designs/for real-world architectures. - Review
05-low-level-designs/for implementation-level understanding. - Use
06-cheatsheets/and07-visuals/for revision and quick recall.
- Scalability, Load Balancing, and Caching
- Databases, Sharding, and Replication
- CAP Theorem, Availability vs Consistency
- API Gateways, Message Queues, CDNs, and Proxies
- Microservices, CQRS, Pub/Sub, Event-Driven Design
- High-Level System Design Case Studies
- Low-Level Design and SOLID Principles
- Interview Preparation and Cheatsheets
Contributions are welcome. If you’d like to add, correct, or improve content:
- Fork the repo
- Create a new branch
- Commit your changes
- Open a Pull Request
Refer to CONTRIBUTING.md for details.
To build a complete, open, and concise System Design resource that helps learners and engineers understand not just what to design, but how and why systems work at scale.