# lib-humus 🌱
Helps creating frontends for humans and computers using axum, [Tera](https://keats.github.io/tera/) and toml.
⚠️ Consider the interface unstable until a version that says that it is stable is released.
> Where does the name come from?
It's something to grow new projects on and it includes ter(r)a, so humus it is.
## What does it do?
### Render Templates
The `HumusEngine` uses Tera and the axum framework to produce http responses with minimal code overhead in the main logic. It is able to serve both a UI and an API from one datastructure.
Use the `axum-view` (enabled by default) feature flag for this. The `axum-view+cookie` feature flag enables additional cookie setting logic.
### Load Templates
For templates to be useful they have to make it from disk into memory. The `TemplateEngineLoader` takes care of loading a whole directory of configurable templates at once.
It is behind the enabled by default `tera-loader` feature flag.
### Load Toml
Coming up with a sophisticated configuration system is fun, but serde and a toml file is usually more than enought. The `read_toml_from_file()` function makes this even easier. Filepath in, parsed struct or Error out.
It is behind the enabled by default `toml` feature flag.
## Compatibility
* lib humus 0.2 is compatible with axum 0.7
* lib-humus 0.1 is made to be compatible with axum 0.6
## Documentation
[You can find the documentation over on docs.rs](https://docs.rs/lib-humus/)
Or you can build the offline documentation yourself:
```sh
cargo doc -F full
firefox target/doc/lib_humus/index.html
```
## License
This project is licensed under an [AGPL-3.0-or-later License](LICENSE) this is to ensure that it isn't used in proprietary software.