# Template Engine

Although server-side rendering is not main-stream nowadays, Vibora has its own template engine. The idea was to build something like Jinja2 but with async users as first class citizens. Jinja2 is already heavily optimized but we tried to beat it in benchmarks.

Jinja2 also prevents you to pass parameters to functions and a few other restrictions which are often a good idea but don't comply with Vibora philosophy of not getting into your way.

The syntax is pretty similar to Jinja2, templates are often compatible.

The render process is async which means you can pass coroutines to your templates and call them as regular functions, Vibora will do the magic.

VTE has hot-reloading so we can swap templates at run-time. This is enabled by default in debug mode so you have a fast iteration cycle while building your app.

Although VTE **do not aim to be sandboxed** it tries hard to prevent the templates from leaking access to outside context.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.vibora.io/engine.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
