diff --git a/readme.md b/README.md similarity index 85% rename from readme.md rename to README.md index 614892e..f9ee1e7 100644 --- a/readme.md +++ b/README.md @@ -11,7 +11,7 @@

English | - Español + Español

@@ -34,7 +34,7 @@ A high-performance, lightweight HTTP server and library built in Rust. HTeaPot i - **Extensible Design**: Easily customize behavior for specific use cases - **Lightweight Footprint**: Zero dependencies and efficient resource usage -## 🚀 Getting Started +## Getting Started ### Installation @@ -101,24 +101,24 @@ fn main() { HTeaPot has been benchmarked against other popular HTTP servers, consistently demonstrating excellent metrics: -| Metric | HTeaPot | Industry Average | -|--------|---------|-----------------| -| Requests/sec | 70,000+ | 30,000-50,000 | -| Error rate | <0.1% | 0.5-2% | -| Latency (p99) | 5ms | 15-30ms | -| Memory usage | Low | Moderate | +| Metric | HTeaPot | Industry Average | +|---------------|---------|------------------| +| Requests/sec | 70,000+ | 30,000-50,000 | +| Error rate | <0.1% | 0.5-2% | +| Latency (p99) | 5ms | 15-30ms | +| Memory usage | Low | Moderate | ## Roadmap -- ✅ HTTP/1.1 support (keep-alive, chunked encoding) -- ✅ Library API -- ✅ Streaming responses -- ✅ Multipart form handling -- ✅ Basic routing system -- 🔜 HTTPS support -- 🔜 Compression (gzip/deflate) -- 🔜 WebSocket support -- 🔜 Enhanced documentation and examples +- [x] HTTP/1.1 support (keep-alive, chunked encoding) +- [x] Library API +- [x] Streaming responses +- [x] Multipart form handling +- [x] Basic routing system +- [ ] HTTPS support +- [ ] Compression (gzip/deflate) +- [ ] WebSocket support +- [ ] Enhanced documentation and examples ## Contributing diff --git a/docs/readme-es.md b/docs/readme-es.md deleted file mode 100644 index 2af5d5d..0000000 --- a/docs/readme-es.md +++ /dev/null @@ -1,30 +0,0 @@ -# HteaPot HTTP Server -Spanish | [English](../readme.md) - -Hteapot es un potente servidor HTTP y biblioteca escrita en Rust, diseñada para aplicaciones web de alto rendimiento. Ofrece una forma sencilla y eficiente de servir archivos estáticos y gestionar solicitudes HTTP con gran rapidez y resiliencia. - -# Funcionalidades - -### 1. **Arquitectura basada en Hilos** - - Sistema personalizado de hilos, capaz de manejar aproximadamente **70,000 solicitudes por segundo**. - - Prioriza la resistencia sobre la velocidad máxima, haciéndolo robusto bajo cargas pesadas. - -### 2. **Rendimiento Bajo Carga** - - Desempeño estable con alta concurrencia, gestionando hasta **50,000 solicitudes por segundo** con conexiones aumentadas. - - Mientras que el rendimiento de otros servidores se degrada bajo alta carga, Hteapot se mantiene estable. - -### 3. **Baja Tasa de Errores** - - Logra una tasa de éxito cercana al **100% de respuestas 200 OK** en pruebas de estrés, demostrando su gran resistencia. - - Supera a otros servidores en condiciones similares, con una tasa mínima de errores en concurrencias extremas. - -# Uso - -## Servidor HTTP independiente - -Puedes configurar el servidor utilizando un archivo TOML. Aquí tienes un ejemplo de configuración: - -```toml -[HTEAPOT] -port = 8081 # Puerto en el que el servidor escuchará las conexiones entrantes. -host = "localhost" # Dirección de host en la que se enlazará el servidor. -root = "public" # Directorio raíz desde el cual se servirán los archivos. diff --git a/docs/readme_i18n/README_ES.md b/docs/readme_i18n/README_ES.md new file mode 100644 index 0000000..7f7bc4f --- /dev/null +++ b/docs/readme_i18n/README_ES.md @@ -0,0 +1,137 @@ +

🍵 HTeaPot

+ +

Una biblioteca de servidor HTTP ultrarrápida y minimalista creada con Rust

+ +

+ Crates.io + Documentación + + Licencia: MIT + Estrellas del repositorio de GitHub +

+ +

+ Inglés | + Español +

+ + +HTeaPot es un servidor HTTP ligero y de alto rendimiento, con una biblioteca desarrollada en Rust. Está diseñado para ofrecer un rendimiento excepcional para aplicaciones web modernas, manteniendo una API sencilla e intuitiva. + +## Características + +### Rendimiento excepcional +- **Arquitectura de subprocesos**: Impulsada por un sistema de subprocesos diseñado a medida que gestiona **más de 70 000 solicitudes por segundo** +- **Consistencia bajo carga**: Mantiene un rendimiento estable incluso en escenarios de alta concurrencia +- **Resiliente**: Logra una **tasa de éxito casi perfecta del 100 %** con 200 respuestas correctas (_OK responses_) durante las pruebas de estrés + +### Funcionalidad versátil +- **Servicio de archivos estáticos**: Sirve recursos estáticos de forma eficiente con una configuración mínima +- **Compatibilidad con streaming**: Aprovecha la codificación de transferencia fragmentada para archivos grandes y conexiones de larga duración +- **API flexible**: Usa HTeaPot como servidor independiente o como biblioteca en tus aplicaciones Rust + +### Fácil de usar para desarrolladores +- **Configuración sencilla**: Comienza rápidamente con la configuración intuitiva de TOML +- **Diseño extensible**: Personaliza fácilmente el comportamiento para casos de uso específicos +- **Reducción de espacio**: Cero dependencias y un uso eficiente de los recursos + +## Primeros pasos + +### Instalación + +```bash +# Instalar desde crates.io +cargo install hteapot + +# O compilar desde el código fuente +git clone https://github.com/yourusername/hteapot.git +cd hteapot +cargo build --release +``` + +### Servidor independiente + +#### Usando un archivo de configuración: + +Crear un archivo `config.toml`: + +```toml +[HTEAPOT] +port = 8081 # El puerto para escuchar +host = "localhost" # La dirección del host al que enlazar +root = "public" # El directorio raíz desde el que servir los archivos +``` + +Run the server: + +```bash +hteapot ./config.toml +``` + +#### Servir rápidamente un directorio: + +```bash +hteapot -s ./public/ +``` + +### Como Biblioteca + +1. Añade HTeaPot a tu proyecto: + +```bash +cargo add hteapot +``` + +2. Implementa en tu código: + +```rust +use hteapot::{HttpStatus, HttpResponse, Hteapot, HttpRequest}; + +fn main() { + // Crea una nueva instancia de servidor + let server = Hteapot::new("localhost", 8081); + + // Define tu controlador de solicitudes + server.listen(move |req: HttpRequest| { + HttpResponse::new(HttpStatus::IAmATeapot, "Hello, I am HTeaPot", None) + }); +} +``` + +## Rendimiento + +HTeaPot se ha comparado con otros servidores HTTP populares, mostrando consistentemente excelentes métricas: + +| Métrica | HTeaPot | Promedio de la industria | +|-----------------|----------|--------------------------| +| Solicitudes/seg | 70,000+ | 30,000-50,000 | +| Tasa de error | <0.1% | 0.5-2% | +| Latencia (p99) | 5ms | 15-30ms | +| Uso de memoria | Low | Moderate | + +## Hoja de ruta (Roadmap) + +- [x] Compatibilidad con HTTP/1.1 (mantenimiento activo, codificación fragmentada) +- [x] API de biblioteca +- [x] Respuestas en streaming +- [x] Gestión de formularios multiparte +- [x] Sistema de enrutamiento básico +- [ ] Compatibilidad con HTTPS +- [ ] Compresión (gzip/deflate) +- [ ] Compatibilidad con WebSockets +- [ ] Documentación y ejemplos mejorados + +## Contribuciones + +¡Agradecemos las contribuciones de la comunidad! Consulta nuestro [CONTRIBUTING.md](../../CONTRIBUTING.md) para obtener las directrices sobre cómo participar. + +## Licencia + +HTeaPot cuenta con la licencia MIT; consulta el archivo [LICENSE](../../LICENSE) para obtener más información. + +## Agradecimientos + +- A la comunidad de Rust por sus excepcionales herramientas y bibliotecas. +- A nuestros colaboradores, que han contribuido a dar forma a este proyecto. +- A los usuarios que aportan valiosos comentarios e informes de errores. +