<div align="center">
<h1> webserve </h1>
</div>
<p align="center">
<img src="https://img.shields.io/github/stars/marcuwynu23/webserve.svg" alt="Stars Badge"/>
<img src="https://img.shields.io/github/forks/marcuwynu23/webserve.svg" alt="Forks Badge"/>
<img src="https://img.shields.io/github/issues/marcuwynu23/webserve.svg" alt="Issues Badge"/>
<img src="https://img.shields.io/github/license/marcuwynu23/webserve.svg" alt="License Badge"/>
</p>
A blazing-fast static file and SPA Web server written in **Rust**, powered by [`warp`](https://crates.io/crates/warp). Supports **live reload**, SPA fallback, and directory serving โ like `npm serve`, but compiled and production-ready.
---
## ๐ Features
- โ
Serve any directory (`-d ./dist`)
- โ
SPA fallback support (`--spa`)
- โ
File watching with automatic browser reload (`--watch`)
- โ
Configurable host and port (`-h`, `-p`)
- โ
Built with Rust + Tokio for high performance
---
## ๐ฆ Installation
```bash
git clone https://github.com/your-username/webserve
cd webserve
cargo build --release
```
The executable will be located in `target/release/webserve`.
You can also install it globally (requires Rust):
```bash
cargo install --path .
```
---
## ๐ Usage
```bash
webserve [OPTIONS]
```
### Options
| `-d`, `--dir` | Directory to serve files from | Current directory |
| `-p`, `--port` | Port to listen on | `8080` |
| `-h`, `--host` | Host/IP to bind | `127.0.0.1` |
| `--spa` | Enable SPA fallback (404 โ index.html) | disabled |
| `-w`, `--watch` | Enable file watching + auto-reload | disabled |
---
## ๐งช Example
Serve a Vite/React app from `./dist`, with SPA fallback and live reload:
```bash
webserve -d ./dist --spa --watch
```
---
## ๐ป Injected Reload Script
When `--watch` is used, `index.html` is automatically injected with:
```html
<script>
const socket = new WebSocket(`ws://${location.host}/reload`);
socket.onmessage = () => location.reload();
</script>
```
---
## ๐ Project Structure
```
webserve/
โโโ src/
โ โโโ main.rs # Web server logic
โโโ Cargo.toml # Dependencies
โโโ README.md
```
---
## ๐ License
MIT ยฉ Mark Wayne Menorca