From f9dbda600e2dd36e7601f4417bcbd73668e787c6 Mon Sep 17 00:00:00 2001 From: JesusPerez Date: Tue, 7 Sep 2021 22:27:49 +0100 Subject: [PATCH] chore: description, inspiration and why --- README.md | 136 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 114 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 607ffd0..15d25fa 100644 --- a/README.md +++ b/README.md @@ -2,45 +2,147 @@ Fork me on GitHub -## WebServices and Monitoring for Clouds +## WebServices and Clouds Monitoring -This was created to: +This was created to play and sync different roles: + +### As WebServer + +- Run several webservers with different settings at once +- Handle pre-configured routes for requests (GET/POST) +- Use SSL for HTTPS webservers +- Serve web client frontend applications and provide them sign-on mechanism +- Run a websever with templates (Tera) multi-language and style customized +- Run as a File server from a preconfigured directory +- Implement authenticated files upload (backend & frontend via templates) + +### As Multilanguage server + +- Allow languages settings for request responses +- Language autosense for data definition + +### As DataServer + +- Manage Data sets from or to (json,yaml,toml) +- Use several alternatives as data store (in memory, key-value) +- Simple data caching or preload +- Use async GraphQL or API mode to handle data requests + +### As Authentication / Authorization server + +- Manage JSON Web Tokens [JWT](https://en.wikipedia.org/wiki/JSON_Web_Token) +- Include simple authentication and user authorization policies. (casbin) +- Handle User login/logout with several Data store +- Manage Sessions and profiles in key-value storage +- Able to encrypt/decrypt data + +### As Customizable server + +- Declare from config and enviroment files: resources path, settings, etc +- Run several tasks in Async mode, with customizable running time +- Use modules (with data and resources) to configure services +- Use several running services level: basic,development +- Simple license and versioning + +## As Monitor and Supervision server + +- Scan Clouds setting to create a global info with current status periodically +- Watch and monitor declared Cloud services status and apply configured custom rules + +## Why + +To explore Rust programming language excelence for backend services, handle web requests with dynamic responses, resources access, data sources, etc. + +[ZTerton](/LibreCloud/ZTerton) code relies on [LibreCloud Libraries](LibreCloud) with different funcionalities for backend developments, so it feeds libraries to reuse code as much as it is possible, by follwing priciple of: to make good programs use the very best libraries. + +To elevate all [CloudMandala(/LibreCloud/CloudMandala)] definitions, settings and management to a next level: + +- A way to collect Cloud settings for frontend web client to create Cloud dashboards +- A Cloud resources state watcher with preconfigured rules to apply according or in response to predictable states + +## Inspiration + +[Terton](https://en.wikipedia.org/wiki/Tert%C3%B6n) is a term within Tibetan Buddhism meaning a person who is a discoverer of ancient hidden texts or [terma](https://en.wikipedia.org/wiki/Terma_(religion)). The Termas are sometimes objects like statues, and can also exist as dharma texts and experiences. Tertöns discover the texts at the right time and place. + +[ZTerton](/LibreCloud/ZTerton) was conceived as a __Bridge__ (image in logo) to achive latest **Z** [termas](https://en.wikipedia.org/wiki/Terma_(religion)) as resources or data from __sources of truth__. -## Requirements for build +## Build -## Build from source +Build is automated in [Rlung](/) repository as a CD/CI in [LibreCloud](/librecloud) Cloud: + +- Release is build upon request +- Binaries for some platforms are build and published as release attachments + +### Requirements for build + +- Rust infraestructure for Linux or MacOs platforms +- JQ, YQ as tools to handle json and yaml + +### Build from source - Clone this repository and go to folder: ```bash -git clone -cd upclapi +git clone https://rlung.librecloud.online/LibreCloud/ZTerton zterton +cd zterton ``` - Build: ```bash -cargo build +cargo build --release ``` - Install (): ```bash +copy target/release/zterton /usr/local/bin ``` -#### Run examples +## Running + +Several components are need it, due to [ZTerton](/LibreCloud/ZTerton) modularity and configurability, a lot of features and funcionalities can be set, enable, extended, etc. + +In some specific cases like: data sources, data storage, graphql, etc some rust coding is need it. + +### Resources + +- Home +- html +- data +- languages +- modules + +### Configuration + +- File **config.toml** + +### Environment + +- File **env** + +Use to preset settings: + +| Arg | Env. var | +|---|---| + +## Running as a service + +### Container settings + +### Run examples Use evironment variables like this: ```bash ``` -If creadentials are not found, this message will be displayed: - ```txt ``` +### Optionals + As an option it is possible to encrypt sensitive informations like: - Credentials (username/password) @@ -57,23 +159,13 @@ As an option it is possible to encrypt sensitive informations like: - That's all! 🎉 -## YAML Config Example +#### YAML Config Example ```yaml ``` -## Environment - -Main vars: - - -Use to preset settings: - -| Arg | Env. var | -|---|---| - -## Coders and encoders +#### Coders and encoders It is possible to encrypt sensitive informations like: