# Calathea ## Templates and rendering Calathea uses the [Tera](https://keats.github.io/tera/) templating engine. To combine Tera and HTMX, the template directory has the following structure: * `components` contains components used to build views. Components are defined as Tera [macros](https://keats.github.io/tera/docs/#macros). * `views` contains view templates that make use of the components. * `updates` are templates returned from e.g. POST requests. Tbey usually directly wrap a component, e.g. a plant `li` item. * `base.html` defines the skeleton for each page. Each view is rendered with this as its surrounding HTML. When a page is requested from the server, it inspects the `HX-Request` and `HX-History-Restore-Request` headers to determine whether a full page should be returned or only the inner view. Using this, the server cn support direct routing to pages and caching properly while still supporting partial rendering using HTMX.