Skip to content

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.

Notifications You must be signed in to change notification settings

JawherKl/system-design-study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

System Design Study with Multi-Language Implementations

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.

Table of Contents

  1. Introduction
  2. Project Structure
  3. System Design Cases
  4. Supported Languages
  5. How to Use
  6. Contributing
  7. License

Introduction

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

Project Structure

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

System Design Cases

  1. Authentication System

    • Theory: Token-based auth, OAuth, JWT
    • Diagram: Authentication Diagram
    • Example: Secured login and session management
  2. Caching System

    • Theory: Cache types (LRU, LFU), Redis
    • Diagram: Caching Diagram
    • Example: Distributed cache for high-traffic apps
  3. Load Balancing

    • Theory: Round-robin, least connections
    • Diagram: Load Balancing Diagram
    • Example: Distributing requests across microservices

... More cases coming soon!


Supported Languages

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

How to Use

1. Clone the Repository

git clone https://github.com/JawherKl/system-design-study.git
cd system-design-study

2. Explore a System Design Case

Navigate to any system design case in your preferred language:

cd php/authentication-system

3. Run the Code

Follow the build and run instructions for each language in the relevant folder.

4. Run Tests

Execute the provided test suite:

# Example for PHP
phpunit tests/

Contributing

Contributions are welcome! To contribute:

  1. Fork the repository
  2. Create a new branch (feature/your-feature-name)
  3. Commit your changes
  4. Push to the branch
  5. Create a pull request

License

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!


Screenshots (Optional)

System Design Example

About

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.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published