Welcome to Systems from Scratch! This repository is a journey into the foundations of critical software systems, where I’m diving deep into how things work under the hood. Here, you’ll find my implementations of various systems and tools, all built from the ground up.
The goal of this repository is to gain a deeper understanding of the core components behind widely-used technologies by re-creating simplified versions of them. Instead of using high-level APIs or libraries, I’m building out functionality step-by-step, learning by doing and exploring:
- How databases manage data
- How web servers handle requests
- How container engines isolate environments
- And much more!
Each directory represents a specific project where I build a foundational technology. Some examples include:
- Databases: Constructing a basic data store and learning how indexing, querying, and persistence work.
- Web Servers: Creating a simple server to understand HTTP, request handling, and client-server interactions.
- Containers: Implementing a basic container engine to explore namespaces, file systems, and process isolation.
- More: With time, we are going to build many things in this repository which i even do not know.
Each project is split into milestones, each building on the last to create a complete and functional component. Tests and examples are included along the way to validate and demonstrate core features.
The purpose here isn’t simply to "build" these systems but to understand them deeply. By coding these systems from scratch, I’m focused on:
- Uncovering the Internals: Breaking down complex concepts to understand the "why" and "how" behind them.
- Strengthening Fundamentals: Reinforcing foundational skills in networking, file handling, data structures, and system-level programming.
- Problem Solving: Tackling each challenge with a problem-solver’s mindset to explore new perspectives and approaches.
I’m implementing these systems in various languages to adapt to different paradigms and learn unique language features. Some languages I’ll be working with include:
- TypeScript
- Python
- Java
Each language offers new insights and challenges, adding a layer of learning to each project.
Here's the basic structure of this repository:
systems-from-scratch/
│
├── database-system/
│ ├── <Python>
│ └── <Java>
│
├── web-server/
│ ├── <Typescript>
│ └── <Python>
│
└── container-engine/
├── <language>
└── ...
***Byimaan***