• This repository has been archived on 13/Aug/2024
  • Stars
    star
    175
  • Rank 218,059 (Top 5 %)
  • Language
    TypeScript
  • License
    GNU General Publi...
  • Created 12 months ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Torii ⛩️ is a simple, powerful and extensible open-source Internal Developer Portal

Torii ⛩️

Torii is a simple, powerful and extensible open-source Internal Developer Portal where developers can find all the tools and services they need to build, deploy, and manage their applications.

Torii focus on three principles:

  • Easily configurable: Platform Engineers can easily define a catalog of tools and services available to developers. They can also define a scorecard and a workflow for each tool and service.
  • Easily usable: Developers can easily find and use the tools and services they need to build, deploy, and manage their applications via a simple web interface.
  • Easily extensible: Platform Engineers can easily extend Torii by adding new tools and services to the catalog.

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

  • MacOSX / Linux / Windows
  • Postgres

Installation

cargo build

# run the server
cargo run

Using containers

Build the container images using make for convenience

#From the root of the repository
make docker_build_backend

make docker_build_frontend

Usage

To start Torii, run the following command:

torii --config ./config.yaml

Using docker compose

docker compose up

Configuration

Configuration file

catalog:
  - name: string
    description: string (optional)
    icon: url (optional)
    fields:
      - title: string
        description: string (optional)
        placeholder: string (optional)
        type: string|integer|float|boolean|list
        default: string (optional)
        required: boolean
        autocomplete-fetcher: ./your-script.py (optional)
    validation:
      - validation-script-1.sh # executed first
      - validation-script-2.sh # AND then this one
    post-validation:
      - script: post-validation-script-1.sh # executed first
        model: string (optional) # model name
      - script: post-validation-script-2.sh # AND then this one
        model: string (optional) # model name
      - script: post-validation-script-3.sh # AND finally this one
        model: string (optional) # model name
models:
  - name: string
    description: string (optional)
    fields:
      - title: string
        type: string|integer|float|boolean|list
        default: string (optional)
        required: boolean

Autocomplete Fetcher

An autocomplete fetcher is a script that must print a JSON on standard output. The JSON must contain a results key that contains a list of values.

{
  "results": [
    "val 1",
    "val 2",
    "val 3"
  ]
}

Example of autocomplete fetcher in python:

import json


def get_data_from_fake_api():
    return [
        'val 1',
        'val 2',
        'val 3',
    ]


if __name__ == '__main__':
    # do your stuff here
    results = get_data_from_fake_api()

    data = {'results': results}

    # print json on standard output
    print(json.dumps(data))

Validation Script

An validation script can be any kind of script. It can be a bash script, a python script, a terraform script, etc. The script must exit with a non-zero exit code if the validation fails.

#!/bin/bash

set -e # exit on error
# print error on standard error output

# do your stuff here
exit 0

Post Validation Script

An post validation script can be any kind of script. It can be a bash script, a python script, a terraform script, etc.

  • The script must exit with a non-zero exit code if the validation fails.
  • The script must be idempotent. It can be executed multiple times without side effects.
  • The output of the script must be a JSON that contains the defined model keys with their values. (Torii will update the model with the values returned by the script)
{
  "status": "success",
  "url": "https://my-service.com",
  "username": "my-username",
  "password": "my-password"
}
#!/bin/bash

set -e # exit on error
# print error on standard error output

# do your stuff here
exit 0

Contributing

Torii is still in early development. If you want to contribute, please open an issue or a pull request. We will improve the contribution guidelines as soon as possible.

Motivation

Today you have the choice between two options to build your Internal Developer Portal:

  1. Painful: Build it yourself with a framework like Backstage
  2. Easy: Use a convenient but proprietary SaaS solution like Port, Cortex, OpsLevel, etc.

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.

FAQ

What's the difference between Torii and Qovery?

  • Qovery 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.

Here is a features table to help you understand the difference:

Feature Qovery (Internal Developer Platform) Torii (Internal Developer Portal)
Build
Deploy
Run
Ephemeral Environment
Self-Service
Catalogs Service
Scorecard Service
Workflow Service Partial with the concept of Pipeline

Why Torii?

Torii is a Japanese gate most commonly found at the entrance of or within a Shinto shrine, where it symbolically marks the transition from the mundane to the sacred.

More Repositories

1

Replibyte

Seed your development database with real data ⚡️
Rust
4,136
star
2

engine

The Orchestration Engine To Deliver Self-Service Infrastructure ⚡️
Rust
2,288
star
3

pleco

Automatically removes Cloud managed services and Kubernetes resources based on tags with TTL
Go
222
star
4

console

Qovery Web Console V3 ⚡️
TypeScript
203
star
5

RedisLess

RedisLess is a fast, lightweight, embedded and scalable in-memory Key/Value store library compatible with the Redis API.
Rust
150
star
6

qovery-cli

Qovery Command Line Interface
Go
78
star
7

helm-freeze

Freeze your charts in the wished versions
Go
57
star
8

terraform-examples

This repository contains ready to use Terraform examples with Qovery to create outstanding infrastructure
50
star
9

iam-eks-user-mapper

A tool to automatically give AWS IAM users access to your Kubernetes cluster.
Rust
48
star
10

documentation

Qovery documentation website
HTML
15
star
11

terraform-provider-qovery

Qovery Terraform Provider
Go
15
star
12

react-xtermjs

Xterm.js for React
TypeScript
13
star
13

qovery-github-actions

Qovery Github action allowing to deploy application.
Go
13
star
14

qovery-client-go

Qovery Golang SDK
Shell
12
star
15

qovery-migration-ai-agent

Qovery Migration AI Agent to Automate and Ease the Migration From Cloud Providers with Qovery
TypeScript
11
star
16

scaleway-api-rs

Rust lib for Scaleway API
Rust
9
star
17

qovery-openapi-spec

Qovery API specs - OpenAPI format
Shell
7
star
18

lifecycle-job-examples

This repository contains ready to use Qovery Lifecycle Jobs examples
7
star
19

simple-example-node

JavaScript
6
star
20

vscode-qovery-extension

Vscode plugin with auto completion
TypeScript
6
star
21

simple-example-gin-with-postgresql

Go
5
star
22

digital-mobius

Automatically recycle not ready Kubernetes nodes on Digitial Ocean
Go
5
star
23

simple-example-node-with-postgresql

JavaScript
4
star
24

qovery-client-typescript-axios

TypeScript
4
star
25

qovery-client-python

Qovery Python Client
Python
3
star
26

spring-boot-api-token

Kotlin
3
star
27

posthog-proxy

Ready to use reverse proxy for Posthog
Dockerfile
3
star
28

qovery-rust-rocket-sample

Rust
2
star
29

intellij-qovery-plugin

Intellij plugin with auto completion
Java
2
star
30

doners

Scale your DNS management in a secure way on Kubernetes
2
star
31

qovery-client-javascript

Qovery Javascript Client
JavaScript
2
star
32

simple-example-laravel-with-postgresql

PHP
2
star
33

doc

Qovery documentation
2
star
34

simple-example-django-with-postgresql

Python
2
star
35

flask-todo

Flask example with Qovery
Python
2
star
36

qovery-javascript-client

JavaScript
1
star
37

migrate-webapp-from-heroku-to-qovery

JavaScript
1
star
38

nginx-gateway

NGINX Gateway
Shell
1
star
39

homebrew-replibyte

Ruby
1
star
40

qovery-templates

Templates to bootstrap popular frameworks on Qovery
Java
1
star
41

http-handler-to-redeploy

This project is a good starting point to create an HTTP handler to redeploy your app on Qovery
Go
1
star
42

scoop-qovery-cli

Scoop to install and update qovery cli
1
star
43

homebrew-qovery-cli

Brew tap Formula to install and update qovery cli
Ruby
1
star
44

qovery-client-typescript

TypeScript
1
star
45

engine-testing-lfs

Repository to test integration of git lfs
Dockerfile
1
star
46

frontend-boilerplate

Boilerplate of Qovery console technical stack (Nx, Ngxs, Rxjs)
TypeScript
1
star
47

simple-example-with-postgresql

Kotlin
1
star
48

undertaqer

Automatically destroy crash looped pods
Smarty
1
star
49

e2e-app

Go
1
star
50

qovery-chart

Qovery Helm Chart for Self-Managed version
Smarty
1
star
51

qovery-php-client

Qovery PHP client library
PHP
1
star
52

qovery-go-client

Qovery Go client library
Go
1
star
53

qovery-python-client

Python
1
star