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

Overview

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.

You might also like...
Open-source tool to enforce privacy & security best-practices on Windows and macOS, because privacy is sexy 🍑🍆

privacy-sexy Open-source tool to enforce privacy & security best-practices on Windows and MacOs, because privacy is sexy 🍑 🍆 privacy-sexy is a data-

An open source Rust high performance cryptocurrency trading API with support for multiple exchanges and language wrappers. written in rust(🦀) with ❤️

Les.rs - Rust Cryptocurrency Exchange Library An open source Rust high performance cryptocurrency trading API with support for multiple exchanges and

Crates - A collection of open source Rust crates from iqlusion

iqlusion crates 📦 This repository contains a set of Apache 2.0-licensed packages (a.k.a. "crates") for the Rust programming language, contributed to

CKB's vm, based on open source RISC-V ISA

Nervos CKB VM About CKB VM CKB VM is a pure software implementation of the RISC-V instruction set used as scripting VM in CKB. Right now it implements

Outp0st is an open-source UI tool to enable next-level team collaboration on dApp development over Terra blockchain
Outp0st is an open-source UI tool to enable next-level team collaboration on dApp development over Terra blockchain

Outp0st is an open-source UI tool to enable next-level team collaboration on dApp development over Terra blockchain

Tradechain is an open source blockchain designed for fast trading & interoperability for new, existing assets

Tradechain is an open source blockchain designed for fast trading & interoperability for new, existing assets. Help build the future of trading with other Tradians.

Open-Source Gamestreaming SDK
Open-Source Gamestreaming SDK

RhinoStream SDK OpenSource AppStream SDK aims to be (or GameStream) equivalent of FFMpeg or GStreamer aimed for use by developers. Stats for 2560x1440

Koofr Vault is an open-source, client-side encrypted folder for your Koofr cloud storage offering an extra layer of security for your most sensitive files.

Koofr Vault https://vault.koofr.net Koofr Vault is an open-source, client-side encrypted folder for your Koofr cloud storage offering an extra layer o

[Open Source] Blockchain Decentralized Lightweight VPN in Rust
[Open Source] Blockchain Decentralized Lightweight VPN in Rust

[Open Source] Blockchain Decentralized Lightweight VPN in Rust DCVPN_Rust (Decentralized VPN in Rust) is an open-source initiative started by @anandgo

Comments
  • feat(docker): create the Dockerfile

    feat(docker): create the Dockerfile

    Hey @evoxmusic,

    I hear about your new project! It seems terrible. Impatient to see the direction it will take. Meanwhile, I contribute to add some tools the project will need later.

    This MR creates the Dockerfile to build the app inside a container and offer a runnable container at the end. I hope you will find this useful!

    Have a great day

    opened by Tchoupinax 2
  • feat: use a safe typed routeur

    feat: use a safe typed routeur

    Hey,

    Suggestion about using a type safe router in react. I did not find the way yet to correctly plug the ErrorPage, as I might miss knowledges about React

    opened by Tchoupinax 3
  • Let's define a roadmap

    Let's define a roadmap

    Hey,

    The project is born recently and contributions are welcome but we don't know the direction to follow. Could we define the roadmap about first steps to reach?

    Have a great day!

    opened by Tchoupinax 3
Owner
Qovery
Qovery is an Internal Developer Platform
Qovery
An extensible open-source framework for creating private/permissioned blockchain applications

Exonum Status: Project info: Community: Exonum is an extensible open-source framework for creating blockchain applications. Exonum can be used to crea

Exonum 1.2k Jan 1, 2023
A holistic, minimal documentation portal for the Polkadot developers.

polkadot-sdk-docs A holistic, minimal documentation portal for the Polkadot developers. Master Tutorial The very, very rough plan that I have so far i

Parity Technologies 9 May 26, 2023
Open Protocol Indexer, OPI, is the best-in-slot open-source indexing client for meta-protocols on Bitcoin.

OPI - Open Protocol Indexer Open Protocol Indexer, OPI, is the best-in-slot open-source indexing client for meta-protocols on Bitcoin. OPI uses a fork

Best in Slot 33 Dec 16, 2023
Simple, reliable, open-source contract verification built for an L2 centric Ethereum ecosystem

Cove This repo contains the backend verification1 code for Cove, a simple, reliable, open-source contract verification built for an L2 centric Ethereu

ScopeLift 12 Apr 1, 2023
Aya is an eBPF library for the Rust programming language, built with a focus on developer experience and operability.

Aya API docs | Chat | Aya-Related Projects Overview eBPF is a technology that allows running user-supplied programs inside the Linux kernel. For more

null 1.5k Jan 6, 2023
Rustycan - UI framework for Rust with focus on developer ergonomics for retained or immediate-like mode

Rustycan is a powerful UI framework for Rust, designed to make it easier than ever to create UIs and update existing UIs for games or apps.

Nokola 3 Jan 3, 2023
HyperCube is a free and open source blockchain project for everyone to use.

XPZ Public Chain HyperCube is a free and open source blockchain project for everyone to use. 日本語 简体中文 正體中文 HyperCube Wiki Wha is HyperCube HyperCube i

null 949 Dec 31, 2022
Open source Rust implementation of the Witnet decentralized oracle protocol, including full node and wallet backend 👁️🦀

witnet-rust is an open source implementation of the Witnet Decentralized Oracle Network protocol written in Rust. Components witnet-rust implements ma

The Witnet Project 155 Nov 21, 2022
An open source desktop wallet for nano and banano with end-to-end encrypted, on chain messaging using the dagchat protocol.

An open source wallet with end-to-end encrypted, on chain messaging for nano and banano using the dagchat protocol.

derfarctor 22 Nov 6, 2022
Automated security testing for open source libraries and applications.

autovet continuously searches for security breaches in open source libraries and applications. Recently processed packages package version channel las

null 5 Aug 23, 2022