We curate 15 open-source GitHub repositories matching "system design 101". Results are ranked by relevance to your query — pick filters below to narrow, or refine with AI.
This project is a comprehensive educational resource focused on the principles, patterns, and trade-offs required to design scalable, reliable, and high-performance distributed systems. It provides a structured curriculum that covers the fundamental architectural strategies necessary for building modern software infrastructure, ranging from high-level system decomposition to low-level networking and data management. The repository distinguishes itself by offering deep dives into complex architectural patterns, such as microservices-based decomposition, event-driven communication, and command-
This structured curriculum covers scalability patterns, distributed systems, and architectural trade-offs with interview-focused depth, making it exactly the comprehensive system-design learning resource you need.
This project serves as a comprehensive technical reference for the architecture and design of data-intensive applications. It provides a structured analysis of the fundamental principles required to build reliable, scalable, and maintainable software systems, covering the core trade-offs inherent in modern data infrastructure. The repository explores the mechanics of distributed data management, including strategies for replication, partitioning, and achieving consensus across multiple nodes. It details the design of storage engines, indexing techniques, and transaction management models, whi
This repository is a structured reference based on the classic book Designing Data-Intensive Applications, covering distributed systems, scalability, caching, and database design — exactly the kind of comprehensive learning resource you are looking for.
This project provides educational materials and courseware focused on the theoretical and practical foundations of distributed systems design. It serves as a comprehensive curriculum covering the disciplines of consensus, data consistency, reliability engineering, and scalability. The instructional content focuses on achieving cluster agreement through consensus algorithms and managing system-wide state via coordination frameworks. It includes a dedicated guide to data theory, exploring replication strategies, consistency models, and data convergence. The courseware covers a broad capability
Aphyr's distsys-class is a curriculum focused on distributed systems foundations such as consensus, consistency, and scalability, making it a relevant learning resource for system design principles, though it emphasizes theoretical distributed concepts rather than covering broader interview-focused topics like caching strategies or real-world case studies.
This project is a centralized engineering knowledge repository that provides a structured curriculum for mastering system design, architectural patterns, and fundamental software development workflows. It serves as a professional development resource for engineers, offering foundational knowledge and real-world case studies to support the design of scalable, secure, and efficient distributed systems. The repository distinguishes itself through a visual-first approach to knowledge synthesis, distilling complex technical concepts into high-density graphical diagrams and succinct illustrations.
ByteByteGo's System Design 101 provides a structured, visual-first curriculum covering scalability, distributed systems, real-world case studies, and fundamental architectural patterns, making it an excellent resource for system design interview preparation.
JavaFamily is a curated set of learning paths and reference guides for backend engineering, distributed systems, and virtual machine internals. It provides a structured curriculum covering the Java language, operating system concepts, and network protocols. The project features detailed study guides for the Java virtual machine architecture, including memory management and garbage collection. It also includes a comprehensive reference for distributed systems, covering microservices, remote procedure call frameworks, and scalable system design. The collection covers a broad range of technical
JavaFamily is a curated learning path covering distributed systems, scalability, and system design concepts, making it a fitting resource for studying system design principles and interview preparation.
This project is a comprehensive educational resource and study guide focused on distributed systems architecture and backend infrastructure design. It provides a structured curriculum for mastering the principles of scalability, reliability, and performance required to design complex software systems. The repository distinguishes itself by offering a methodical approach to technical interview preparation, incorporating design patterns, architectural trade-offs, and spaced repetition tools to help users retain complex concepts. It emphasizes constraint-driven analysis, teaching users how to ev
The System Design Primer is the definitive open-source study guide for system design, covering scalability patterns, distributed systems, caching, database design, and real-world architectural trade-offs in a structured format purpose-built for interview preparation.
This project is a structured framework for practicing and simulating mobile system design interviews. It provides a guided methodology for scoping requirements, gathering constraints, and designing scalable systems with a focus on mobile platforms. At its core, it acts as both an interview simulation platform and a study guide, covering mobile-specific topics such as offline caching, push notifications, and network efficiency. To differentiate itself from generic system design resources, the framework includes a set of architectural tools tailored for interviews. An adaptive hint system and s
Weeebox/mobile-system-design is a mobile-focused system design interview preparation framework that covers mobile-specific caching, network efficiency, and trade-off analysis, but it is narrower in scope than a comprehensive general system design learning resource for all scalability patterns and distributed systems.
This project is a growth engineering guide and full-stack development curriculum. It serves as a manual for applying lean engineering and data-driven workflows to accelerate product growth, while providing a structured learning path for building, scaling, and maintaining web applications. The resource functions as a lean software development framework and a scalable architecture handbook. It provides guidelines for designing decoupled systems using microservices and caching to ensure stability, alongside a web performance optimization guide for increasing site speed and search engine visibili
This open-source handbook covers system architecture, microservices, caching, and scalability patterns, making it a solid learning resource for system design interview preparation, though it may not delve deeply into algorithmic trade-offs or specific case studies.
Awesome Fenix is an open-source reference project and comprehensive guide that traces the evolution of software architecture from monolithic systems through microservices, service meshes, and serverless patterns. At its core, it provides a working bookstore application implemented in multiple architectural styles, allowing developers to study the trade-offs and migration paths between each approach through runnable code examples. The project distinguishes itself by treating infrastructure as disposable and reproducible, using Docker and Kubernetes to hide distributed complexity while enabling
Fenix provides a hands-on, runnable reference implementation that evolves through major architectural styles (monolith to serverless), making it an excellent resource for learning system design principles, scalability trade-offs, and distributed systems concepts through concrete code examples and migration paths.
This project is a comprehensive learning resource and reference guide for software architecture and distributed systems design. It serves as a structured curriculum for engineers to study fundamental architectural patterns, scalability strategies, and distributed computing theory, specifically tailored to prepare for technical interviews and professional engineering roles. The repository distinguishes itself by providing a curated collection of industry-standard infrastructure tools and methodologies. It covers the selection and implementation of technologies for data storage, message brokeri
This is a curated curriculum and reference guide covering scalability, distributed systems, caching, database design, and other key architecture topics, directly addressing the need for a comprehensive system design learning resource and interview preparation.
This repository serves as a technical reference for designing scalable, resilient, and performant software within distributed service environments. It provides a collection of architectural patterns and structural strategies intended to guide the development of complex, decoupled systems that maintain high availability and data integrity under heavy load. The resource focuses on the core principles of microservices architecture, offering guidance on managing communication between independent software components through both synchronous and asynchronous messaging. It details strategies for mai
This repository curates a wide collection of system design patterns, distributed systems concepts, and scalability resources, making it a comprehensive learning companion for interview preparation.
Algodeck is an open-source collection of flash cards designed for reviewing algorithms, data structures, and system design concepts, specifically curated for technical interview preparation. The project organizes knowledge into atomic question-and-answer pairs and incorporates spaced repetition scheduling to optimize long-term memory retention. The flash card catalog covers a broad range of computer science topics, including classic sorting algorithms like quicksort and mergesort, data structure operations for arrays, trees, heaps, tries, and graphs, as well as bit manipulation techniques for
Algodeck is a flash-card-based learning resource that covers essential system design concepts, distributed systems algorithms, and trade-offs, making it a focused study tool for interview preparation; while it may not offer in-depth guides or real-world case studies, it squarely serves as a system design learning resource.
This repository provides a comprehensive collection of educational materials and strategies designed to assist technical professionals in preparing for the various stages of the software engineering interview process. It covers core competencies including algorithmic problem-solving, behavioral interview techniques, system design architecture, and general career development. The content is organized into structured study plans and tactical guides that address specific interview formats, ranging from initial phone screens to final onsite sessions. It includes resources for mastering data struc
This handbook is a popular open-source interview preparation guide that includes dedicated system design content, making it a relevant resource for learning architecture and design principles for interviews, though it covers broader topics alongside.
This project is a curated educational resource providing structured guidance on the architecture, design principles, and implementation of distributed computing systems. It serves as a comprehensive study guide for understanding the theoretical and practical aspects of building resilient, fault-tolerant software. The repository functions as a collection of translated notes, annotated code examples, and academic resources that focus on core concepts such as consensus, data replication, and consistency models. By organizing complex technical topics into a logical curriculum, it assists in the s
This repository provides translated materials from MIT's distributed systems course, making it a genuine learning resource for that subject, but its narrow focus on one course and lack of broader coverage on scalability patterns, case studies, caching, and database design mean it falls short of the comprehensive interview-preparation resource you are looking for.
This project is a collection of educational resources and structured study materials focused on mastering distributed systems, backend infrastructure, and architectural patterns. It provides a comprehensive curriculum designed to help engineers understand the fundamental principles of building scalable, reliable, and high-traffic software systems. The repository serves as a reference for evaluating technical design decisions and preparing for architectural interviews. It covers a wide range of engineering competencies, including infrastructure planning, the analysis of common design trade-off
This repository is a curated set of system design interview questions and solutions, making it a focused learning resource for interview preparation that covers scalability, patterns, and trade-offs.