# nanoserve
[](https://github.com/PRO-2684/nanoserve/blob/main/LICENSE)
[](https://github.com/PRO-2684/nanoserve/blob/main/.github/workflows/release.yml)
[](https://github.com/PRO-2684/nanoserve/releases)
[](https://github.com/PRO-2684/nanoserve/releases)
[](https://crates.io/crates/nanoserve)
[](https://crates.io/crates/nanoserve)
[](https://docs.rs/nanoserve)
> [!NOTE]
> This is a toy project, primarily used as my handin for the course [Computer Networks](https://jwcg.ucas.ac.cn/public/courseOutlines?courseId=289907).
Nanoserve is a lightweight, educational HTTP/1.1 server implementation built using TCP sockets and modern Rust async I/O. It demonstrates HTTP protocol fundamentals, asynchronous networking, and systems programming best practices. This server supports core HTTP/1.1 features including GET requests, range requests (partial content), graceful shutdown, and efficient file serving.
## 📥 Installation
### Using [`binstall`](https://github.com/cargo-bins/cargo-binstall)
```shell
cargo binstall nanoserve
```
### Downloading from Releases
Navigate to the [Releases page](https://github.com/PRO-2684/nanoserve/releases) and download respective binary for your platform. Make sure to give it execute permissions.
### Compiling from Source
```shell
cargo install nanoserve
```
## 💡 Examples
TODO
## 📖 Usage
TODO
## ✅ TODO
- [ ] Accept `HEAD` and `OPTIONS`, returning file metadata
- [ ] `Content-Length` header
## 🎉 Credits
TODO