EL FRAMEWORK
Lo que hay debajo de la declaración
Un conjunto de crates Rust en tres capas, compuestos con features de Cargo y dirigidos por la misma configuración Nickel con la que se escribe un sitio.
Capacidades
Generación de código al compilar
site/config/*.ncl → build.rs → OUT_DIR → include!(): rutas, páginas, menús y el registro FTL se generan al compilar y son salida de solo lectura.
Dos perfiles de renderizado
HtmxSsr renderiza plantillas Minijinja en el servidor con HTMX para la interacción y sin WebAssembly; LeptosHydration sirve SSR de Leptos con hidratación WASM. Se elige por ruta, por espacio de trabajo o por defecto.
Autenticación y RBAC
JWT, OAuth2 y segundo factor TOTP, contraseñas con Argon2, control de acceso por roles con políticas en Nickel y cabeceras de seguridad con tower-http.
Plugins en tiempo de compilación
Los traits ResourceContributor y PageContributor aportan temas, menús, traducciones y páginas, registrados al arrancar y sin cargador de plugins en tiempo de ejecución.
SEO en todos los perfiles
Una capa SEO independiente del modo de renderizado: metaetiquetas, Open Graph, tarjetas de Twitter, enlaces canonical y hreflang, JSON-LD, sitemap y robots.
Composición con features de Cargo
auth, content-db, content-static, email, tls, metrics, crypto y markdown son features: cada build compila solo lo que el sitio activa, para los destinos WASM y nativo.
Tres capas
Cada capa tiene una única responsabilidad, y una implementación llega a la base solo a través de los puertos.
Tu aplicación
La capa de implementación: el servidor, el cliente y las páginas de un sitio, con rutas, páginas e i18n generados a partir de su configuración.
Puertos del framework
Una API pública estable que envuelve la base: rustelo_web para la pila web, rustelo_auth para autenticación y autorización, rustelo_content para la gestión de contenido.
Base
Las implementaciones centrales: configuración, i18n, RBAC, el servidor Axum, el cliente Leptos, los componentes, la generación de páginas y la configuración de build en Nickel.
Crates
Los crates de los que están hechas las capas.
- rustelo_web
- Puerto paraguas de la pila web sobre la base.
- rustelo_auth
- Puerto de autenticación y autorización.
- rustelo_content
- Puerto de gestión de contenido.
- rustelo_server
- El servidor Axum: SSR, middleware, autenticación, base de datos, correo.
- rustelo_core_lib
- Tipos centrales de ejecución: configuración, i18n, registro.
- rustelo_routing
- Enrutado con soporte de idiomas.
- rustelo_config
- Carga de configuración desde Nickel y TOML.
- rustelo_seo
- Capa SEO para todos los perfiles de renderizado.
- rustelo_pages_htmx
- Renderizadores de páginas Minijinja para HTMX-SSR.
- rustelo_components_htmx
- Componentes de interfaz para HTMX-SSR.
- rustelo_client
- El cliente Leptos WASM para la hidratación.
- rustelo_components_leptos
- Componentes de interfaz para la hidratación Leptos.
- rustelo_cli
- Subcomando de Cargo para la gestión de proyectos.
Tecnología
- Rust
- Leptos
- Axum
- HTMX
- Minijinja
- Tokio
- SQLx
- PostgreSQL
- SQLite
- Nickel
- Fluent
- tower-http
- Syntect
- Argon2
- UnoCSS
Empieza por la declaración
Lee qué es Rustelo y los conceptos sobre los que se construye, o pregunta cómo usarlo en tu sitio.