lumine 0.2.2

A simple and minimal HTTP web server.
Documentation
# Lumine

A **synchronous HTTP web server** written in Rust.

Lumine is designed to be:

- **Fast** — Although synchronous, Lumine performs well for small to medium-scale APIs.
- **Easy** — Simple architecture, minimal concepts, and beginner-friendly API.

---

## Why Lumine?

Most modern Rust web frameworks are async-first. That’s great, but not always ideal.

Lumine exists for cases where you want:

- To **learn how an HTTP server works internally**
- A **simple web server without async/await complexity**
- Full control with minimal dependencies and a std-first design

> Lumine focuses on clarity first, performance second, and magic never.

---

## Installation

Add Lumine to your project via command line.

```bash
cargo add lumine
```

---

## Example

A minimal **Hello World** HTTP server using Lumine.

*main.rs*

```rust.no_run
use lumine::{Lumine, Result};
use std::net::TcpListener;

fn main() -> Result<()> {
    let app = Lumine::builder()
        .route("/", |_| "Hello, World!")
        .build();

    let listener = TcpListener::bind("127.0.0.1:8080")?;

    // Start serving incoming connections
    let rx = app.serve(listener);
    
    // ⚠️ IMPORTANT:
    // This loop is REQUIRED.
    //
    // The receiver must be continuously polled to keep the
    // internal event loop alive. If this loop is removed,
    // the server will stop processing events properly.
    //
    // In short: no recv loop = dead server.
    while let Ok(err) = rx.recv() {
        eprintln!("Client error: {err}");
    }

    Ok(())
}
```

Then open your browser at:

```bash
http://127.0.0.1:8080
```

---

## Examples

More complete examples are available in the `/examples` directory.

To run an example:

```bash
cargo run --example <example-name>
```

---

## Behind the Scenes

Internally, Lumine is built using:

* `std::net::TcpListener` for networking
* A simple routing mechanism
* Thread-based request handling
* An event channel for propagating client-side errors

No async runtime, no hidden magic.

---

## Project Status

> ⚠️ **Early Development Warning**

Breaking changes may occur as the API evolves.

---

## License

This project is licensed under the [MIT License.](https://github.com/Ellen-desu/lumine/blob/main/LICENSE)