diff --git a/README.md b/README.md index e0cfcb0..bb30c63 100644 --- a/README.md +++ b/README.md @@ -15,39 +15,6 @@ That's it! > ⚠️ Torii is in active development and not ready for production yet. -## Concepts - -### Catalogs Service - -The Catalogs Service is the core of Torii. It allows Platform Engineers to define a catalog of tools and services that developers can -use to build, deploy, and manage their applications. - -The Catalogs Service is a simple YAML file that contains the list of tools and services available to developers. It also contains the list -of -scripts to run to validate and submit the form. - -### Scorecard Service - -The Scorecard Service is a simple service that allows Platform Engineers to define a scorecard for each tool and service available in the -Catalogs Service. The scorecard is a simple YAML file that contains the list of criteria and the score for each criterion. - -### Workflow Service - -The Workflow Service is a simple service that allows Platform Engineers to define a workflow for each tool and service available in the -Catalogs Service. The workflow is a simple YAML file that contains the list of steps and the order of each step. - -## Features - -| Feature | Status | -|-------------------|---------------------| -| Catalogs Service | WIP | -| Scorecard Service | Not implemented yet | -| Workflow Service | Not implemented yet | -| Authentication | Not implemented yet | -| Authorization | Not implemented yet | -| Audit | Not implemented yet | -| Logging | Not implemented yet | - ## Getting Started ### Prerequisites @@ -75,7 +42,6 @@ make docker_build_backend make docker_build_frontend ``` - ## Usage To start Torii, run the following command: @@ -208,6 +174,45 @@ set -e # exit on error exit 0 ``` +## Features + +| Feature | Status | +|------------------|---------------------| +| Catalogs Service | WIP | +| Authentication | Not implemented yet | +| Authorization | Not implemented yet | +| Audit | Not implemented yet | + +### Catalogs Service + +The Catalogs Service is the core of Torii. It allows Platform Engineers to define a catalog of tools and services that developers can +use to build, deploy, and manage their applications. + +The Catalogs Service is a simple YAML file that contains the list of tools and services available to developers. It also contains the list +of scripts to run to validate and submit the form. + +## How Torii works + +Torii works with 2 main components: + +- Backend: The backend is a Rust application that exposes a REST API to interact with the frontend. It's configured with a YAML file that + contains the catalog of tools and services available to developers. +- Frontend: The frontend is a React application that interacts with the backend to display the catalog of tools and services available to + developers. + +![Torii Architecture](./assets/diagram1.png) + +Once the backend is started, it loads the configuration file, checks the syntax, and starts the REST API. Then, the frontend can be started +and it will interact with the backend to display the catalog of tools and services available to developers. + +When a developer wants to use a tool or service, the frontend sends a request to the backend to get the form to fill. The backend sends the +form to the frontend, the developer fills it, and sends it back to the backend. The backend runs the validation scripts, the post-validation +scripts, and updates the model with the values returned by the post-validation scripts. + +![Torii Sequence Diagram](./assets/diagram2.png) + +As a Platform Engineer, you can easily define a catalog of tools and services available to developers. + ## Contributing Torii is still in early development. If you want to contribute, please open an issue or a pull request. We will improve the @@ -215,17 +220,24 @@ contribution guidelines as soon as possible. ## Motivation -Today you have the choice between two options to build your Internal Developer Portal: +Today you have the choice between three options to build your Internal Developer Portal: -1. Painful: Build it yourself with a framework like [Backstage](https://backstage.io/) -2. Easy: Use a convenient but proprietary SaaS solution like Port, Cortex, OpsLevel, etc. +1. Use [Backstage](https://backstage.io) from Spotify. It's a great solution but it's hard to extend and customize. You need to be a + TypeScript/React expert to extend it. +2. Use a proprietary SaaS solution like Port, Cortex, OpsLevel, etc. It's a great solution but it's expensive and you don't have control + over the codebase. +3. Build your own solution from scratch. It's a great solution but it's hard to maintain and scale. You need to be a full-stack developer to + build it. -**We want to bring a third option** that takes the best of both worlds: an open-source solution that is easy to use and easy to extend. +Torii is a simple, powerful, and extensible open-source Internal Developer Portal that aims to be the best of all worlds. It's easy to +extend and customize, it's free, and you have control over the codebase. ## FAQ ### What's the difference between Torii and Qovery? +The Qovery and Torii projects are two different projects with different goals: + - [Qovery](https://www.qovery.com) is an Internal Developer **Platform** focusing on the Software Development Lifecycle (build, deploy, run). - Torii is an Internal Developer **Portal** focusing on unifying the experience of all engineering tools. diff --git a/assets/diagram1.png b/assets/diagram1.png new file mode 100644 index 0000000..785c7cd Binary files /dev/null and b/assets/diagram1.png differ diff --git a/assets/diagram2.png b/assets/diagram2.png new file mode 100644 index 0000000..07c7833 Binary files /dev/null and b/assets/diagram2.png differ diff --git a/backend/Cargo.toml b/backend/Cargo.toml index a8f4d05..d63e3a1 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "backend" +name = "torii" version = "0.1.0" edition = "2021" @@ -17,7 +17,7 @@ serde_yaml = "0.9" serde_json = "1.0" clap = { version = "4.4", features = ["derive"] } chrono = "0.4" -which = "5.0.0" +which = "6.0.1" uuid = { version = "1.4.1", features = ["v4"] } # [dev-dependencies]