docs(adr): ADR-0001: Use Tera as Default Template Engine
@aRustyDev ya está trabajando en esto.
Desde el 5/1/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
ADR-0001: Use Tera as Default Template Engine
Status
Accepted
Context
The mdbook-htmx backend needs a template engine to render HTMX-enhanced HTML pages. The skeleton files indicated support for multiple engines:
- Nunjucks (JavaScript)
- Handlebars (Rust/JS)
- Liquid (Ruby/Rust)
- Tera (Rust-native)
The backend is written in Rust to align with MDBook's ecosystem and ensure seamless integration via the mdbook-renderer crate.
Decision Drivers
- Language Consistency - Backend is Rust; prefer Rust-native engines
- Performance - Compile-time template validation, no FFI overhead
- Feature Parity - Must support: includes, extends, filters, conditionals
- Ecosystem Fit - Used by other Rust documentation tools (Zola)
- Maintenance - Active development, good documentation
Options Considered
Option A: Tera
Pros:
- Pure Rust, compiles with the backend
- Jinja2-compatible syntax (familiar to Python/Django developers)
- Template inheritance (
{% extends %},{% block %}) - Custom filters and functions
- Used by Zola (similar documentation use case)
- Compile-time syntax validation
Cons:
- Less feature-rich than full Jinja2
- Smaller community than Handlebars
Option B: Handlebars (handlebars-rs)
Pros:
- Rust implementation available
- Wide adoption across languages
- Logic-less philosophy (simpler templates)
Cons:
- No template inheritance (only partials)
- Verbose for complex layouts
- Logic-less can be limiting for HTMX patterns
Option C: Liquid (liquid-rust)
Pros:
- Rust implementation available
- Simple syntax
- Used by Jekyll
Cons:
- Limited control flow
- No template inheritance
- Less expressive for component-based layouts
Option D: Nunjucks (via wasm or subprocess)
Pros:
- Full Jinja2 compatibility
- Rich feature set
Cons:
- JavaScript runtime dependency
- Performance overhead (subprocess or WASM)
- Complicates build/distribution
Decision
Use Tera as the default template engine.
Rationale:
- Pure Rust eliminates external dependencies
- Template inheritance is essential for
layout.html→page.htmlpattern - Jinja2 syntax is widely known
- Zola uses Tera for similar documentation purposes, proving suitability
- Custom filters enable
{{ asset('path') }}helper for hashed filenames
Consequences
Positive
- Single-binary distribution (no runtime dependencies)
- Fast template compilation and rendering
- Familiar syntax for most developers
- Strong typing integration with Rust structs
Negative
- Users familiar with Handlebars/Liquid need to learn Tera
- Some advanced Jinja2 features not available
Mitigation
- Document Tera syntax in SPEC
- Provide example templates
- Consider optional Handlebars support in future (via feature flag)
References
- Lenguaje dominante
- Rust
- Estrellas
- 0
- Forks
- 1
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de aRustyDev/mdbook-htmx
-
feat(ci): Implement cross-repo-validate compliance for docs syncQuizá libre de nuevo @aRustyDev la tomó hace 283 días y no hay ningún pull request abierto. Abiertoci enhancement
aRustyDev/mdbook-htmx#58 · 1 comentario · 1 asignado ·
-
docs(htmx): Explain how HTMX worksQuizá libre de nuevo @aRustyDev la tomó hace 286 días y no hay ningún pull request abierto. Abierto
aRustyDev/mdbook-htmx#48 · 3 comentarios · 1 asignado ·
-
docs(mdbook-htmx): Parent Issue for documentationQuizá libre de nuevo @aRustyDev la tomó hace 286 días y no hay ningún pull request abierto. Abiertodocumentation
aRustyDev/mdbook-htmx#47 · 1 asignado ·
-
docs(examples): Secure Self-Hosted Meilisearch via CloudflareQuizá libre de nuevo @aRustyDev la tomó hace 286 días y no hay ningún pull request abierto. Abiertodocumentation
aRustyDev/mdbook-htmx#46 · 1 asignado ·
-
docs(examples): Kubernetes with MeilisearchQuizá libre de nuevo @aRustyDev la tomó hace 286 días y no hay ningún pull request abierto. Abiertodocumentation
aRustyDev/mdbook-htmx#45 · 1 asignado ·
Todos los issues de aRustyDev/mdbook-htmx
Issues similares
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
fritzprix/libr-agent#2165 ·
Los mantenedores suelen responder en 1 día
-
area:ecosystem bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Chelis-Lang/chelis#3942 ·
Los mantenedores suelen responder en 1 día
-
needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
Los mantenedores suelen responder en 1 día
-
review-bot
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día