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.