System Design explained from first principles to senior engineer-level thinking, with a focus on AI-assisted (vibecoding) development. Learn how to reason about systems, understand trade-offs, and validate AI-generated designs beyond just working code.
This repository covers system design from fundamentals to advanced topics. It's designed to:
- Build understanding progressively - Each level builds on the previous
- Connect concepts to AI prompting - Learn how each concept improves your ability to work with AI tools
- Be practical - Focus on what you'll actually use
- Prepare for interviews - Covers topics common in system design interviews
| Level | Topic | Chapters | What You'll Learn |
|---|---|---|---|
| 0 | Getting Started | 3 | What this is, how to use it |
| 1 | Foundation | 5 | Client-server, networking, HTTP, databases |
| 2 | Core Concepts | 5 | Latency, availability, scalability, CAP theorem |
| 3 | Building Blocks | 10 | Load balancers, caching, CDNs, rate limiting, logging |
| 4 | Data Layer | 4 | Indexing, replication, sharding, database selection |
| 5 | Distributed Systems | 6 | Message queues, consensus, transactions, locking |
| 6 | Architecture Patterns | 7 | Microservices, Kafka, data processing, Kubernetes |
| 7 | Real-World Designs | 17 | Chat, payments, crawlers, presence, proximity |
| 8 | Senior Engineer Thinking | 9 | Performance, incidents, security, cost, reviews |
| 9 | Vibe Engineering | 5 | Prompting, validation, production systems |
Total: 71 chapters covering system design from fundamentals to senior-level expertise.
Go through levels 0-9 in order. Takes 2-4 weeks with consistent study.
Focus path for system design interviews:
- Level 2: Core Concepts (fundamentals)
- Level 3: Building Blocks (components you'll discuss)
- Level 7: Real-World Designs (practice problems)
- Level 9: Interview Framework
To immediately improve AI collaboration:
- HOW-TO-VIBECODE.md - Start here
- Level 9: Vibe Engineering Masterclass
Every topic in this repo connects to better AI prompting:
| You Learn | You Can Prompt |
|---|---|
| Load balancing | "Running behind ALB with 3 instances, health checks on /health" |
| Caching patterns | "Cache-aside pattern with Redis, TTL 5 minutes" |
| Database indexing | "Add composite index on (user_id, created_at)" |
| Message queues | "Publish to Kafka, consumer is idempotent" |
| Circuit breakers | "Add circuit breaker for payment service calls" |
| Consistency models | "Eventual consistency is fine, use async replication" |
The more concepts you know, the more precisely you can direct AI tools.
- Chapters - In-depth content with real-world examples
- Common Mistakes - What to avoid and why
- Senior-Level Thinking - What senior engineers consider
- Vibe Engineering Guide - How to prompt AI for each topic
- Quick Check Questions - Test your understanding
- Flashcards - Quick review cards
- Quiz - Self-assessment
- Learning Paths - Where to start based on your background
- Glossary - Terms and definitions
- Recommended Reading - Books and blogs
- Prompt Patterns - Quick reference for AI prompting
- Common AI Mistakes - What to check in AI output
- Numbers to Know - Estimation reference
- How to Vibecode - Complete AI prompting guide
Found a mistake or have an improvement? See Contributing.
For learning: Go through levels in order. Each builds on previous.
For reference: Jump to specific topics when needed.
For AI development: Use concepts to write better prompts. See HOW-TO-VIBECODE.md.
For interviews: Focus on Levels 2, 3, 7, and the interview framework in Level 9.
The goal: understand systems well enough to architect them yourself, and direct AI tools to implement them correctly.
If you find this guide helpful, please star the repository! It helps others find this resource and encourages further updates. 🌟