https://github.com/ychaaibi/webserv
webserv is a lightweight HTTP server built from scratch in C++98. It prioritizes efficiency and clean code.
https://github.com/ychaaibi/webserv
c-programming-language cplusplus http-client http-requests http-server http1-1 sockets webserver
Last synced: 15 days ago
JSON representation
webserv is a lightweight HTTP server built from scratch in C++98. It prioritizes efficiency and clean code.
- Host: GitHub
- URL: https://github.com/ychaaibi/webserv
- Owner: ychaaibi
- Created: 2024-04-20T11:04:52.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-24T15:29:55.000Z (about 2 years ago)
- Last Synced: 2025-10-29T16:06:33.698Z (9 months ago)
- Topics: c-programming-language, cplusplus, http-client, http-requests, http-server, http1-1, sockets, webserver
- Language: C++
- Homepage:
- Size: 13.8 MB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Non-Blocking HTTP Server in C++98 🌐
```[ Project Completion Date : 2022 - 02 - 10 ]```
## Project Overview 📋
webserv is a lightweight HTTP server built from scratch in C++98. It prioritizes efficiency and clean code, adhering to the SOLID principles for ultimate maintainability.
## Key Features 🔧
- **Non-Blocking I/O (⚡):** Handles multiple client connections concurrently using `select()` (or equivalent) for maximum server throughput. This means your server can handle a ton of requests at once, keeping things blazing fast!
- **Proxy Design Pattern (🔄):** Encapsulates network communication logic promoting code reusability and making testing a breeze. Think of it as modular magic, making your code easy to understand and maintain. ✨
- **Configuration Parsing (⚙️):** Reads server configuration from external files, allowing for flexible management with minimal effort. No more hardcoding configurations, just pure flexibility!
- **Static File Serving (📁):** Efficiently delivers static content (HTML, CSS, images) based on client requests. This means lightning-fast delivery of those essential website elements.
- **Dynamic Request Handling (🔄):** Supports common HTTP methods (GET, POST, DELETE) for handling dynamic interactions. This makes your server truly versatile, able to handle a wide range of requests.
- **Error Handling (❌):** Provides user-friendly error messages for invalid requests or server issues. No more cryptic errors, just clear and informative messages for easy troubleshooting.
- **SOLID Principles (🔨):** Adheres to Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion principles for a well-structured and maintainable codebase. Think of it as the foundation for a code fortress, built to be strong and reliable.
- **CGI Integration (🔌):** Enables execution of external CGI scripts for server-side processing.
## Project Conclusion 🎓
Building webserv has been a rewarding experience, deepening my understanding of:
- Low-level network programming
- System resource management
- Adherence to HTTP protocols
- Applying design patterns and SOLID principles for clean, maintainable code
This project demonstrates my ability to code efficiently while keeping maintainability as a top priority. I believe in building code that not only works well but is also easy to understand and improve upon in the future.
## Contributers 🔨
* * Youness Chaaibi -- ychaaibi
* * Youssef Alaoui Sossi -- yoaloui