Welcome to the System Design Study project, where we explore and implement various system design concepts using multiple programming languages: PHP, Go, JavaScript, and Java. This repository provides practical examples, theoretical explanations, and system diagrams for a comprehensive understanding of real-world system design cases.
- Introduction
- Project Structure
- System Design Cases
- Supported Languages
- How to Use
- Contributing
- License
System design is an essential aspect of software engineering, involving the creation of scalable, reliable, and maintainable systems. This project delves into various design cases, offering theoretical insights alongside practical implementations in multiple languages.
Each system design case includes:
- Detailed Theorem Explanation
- Diagrams and Architecture
- Real-World Examples
- Code Implementations
- Tests for Verification
system-design-study/
├── README.md # Project overview and instructions
├── diagrams/ # System design diagrams
├── docs/ # Theoretical explanations and use cases
├── implements/
│ ├── php/ # PHP implementations
│ ├── go/ # Go implementations
│ ├── js/ # JavaScript implementations
│ ├── java/ # Java implementations
└── .gitignore # Git ignore file
-
Authentication System
- Theory: Token-based auth, OAuth, JWT
- Diagram: Authentication Diagram
- Example: Secured login and session management
-
Caching System
- Theory: Cache types (LRU, LFU), Redis
- Diagram: Caching Diagram
- Example: Distributed cache for high-traffic apps
-
Load Balancing
- Theory: Round-robin, least connections
- Diagram: Load Balancing Diagram
- Example: Distributing requests across microservices
... More cases coming soon!
Language | Folder Name | Build Command | Test Command |
---|---|---|---|
PHP | php/ |
php src/yourFile.php |
phpunit tests/ |
Go | go/ |
go build ./src/... |
go test ./tests/... |
JavaScript | js/ |
node src/yourFile.js |
npm test |
Java | java/ |
javac src/*.java |
java -cp src YourTestClass |
git clone https://github.com/JawherKl/system-design-study.git
cd system-design-study
Navigate to any system design case in your preferred language:
cd php/authentication-system
Follow the build and run instructions for each language in the relevant folder.
Execute the provided test suite:
# Example for PHP
phpunit tests/
Contributions are welcome! To contribute:
- Fork the repository
- Create a new branch (
feature/your-feature-name
) - Commit your changes
- Push to the branch
- Create a pull request
This project is licensed under the MIT License. See the LICENSE file for details.
Feel free to reach out with any questions or suggestions via GitHub Issues or Pull Requests!