Components
Several Git repositories contain the components of the PHT. Third party components can be found on the respective manufacturer's site. These components can be roughly separated into the following categories:
- Central
- Local
All public repositories can be found on GitHub.
Central
Central components/services are individual packages within one monorepo. They include the implementation of the Central UI, Train Building, Train Routing, Result Extraction, API, etc., which supply the core functions of the PHT.
Service | Repository | Programing Language | Lead |
---|---|---|---|
User Interface | PHT-Medic/central | TypeScript | tada5hi |
API | PHT-Medic/central | TypeScript | tada5hi |
Realtime | PHT-Medic/central | TypeScript | tada5hi |
Train-Manager | PHT-Medic/central | TypeScript | tada5hi |
User Interface
- Frontend application for proposal and train management, downloading of results and much moreAPI
- Backend application to manage resources and trigger commands & events through the message brokerRealtime
- Distribute resource events to authorized clientsTrain Manager
- Microservice serving different components:Train Building
- Build and distribute train images to a registryTrain Routing
- Move trains between projects & registries accordingly to the route of the trainResult Extracting
- Download, extract & serve encrypted results from the registry
Third-Party Service | Repository | Programing Language |
---|---|---|
Harbor | goharbor/harbor | Go/TypeScript |
RabbitMQ | rabbitmq/rabbitmq-server | Starlark |
Vault | hashicorp/vault | Go/JavaScript |
Harbor
- Harbor is a docker registry to distribute images. In the context of the PHT it is used for train distribution across multiple locations.RabbitMQ
- RabbitMQ is a message broker. It is used for the communication between microservices.Vault
- Vault is a secret storage service for managing and storing sensitive information.
Local
Local/Station components/services are packages utilized in local setups by analysts and administrators. The Station repository is used to set up local stations by administrators. The Desktop App implements a released version of the local PHT tool, necessary for the encryption of stations and signing/decryption of trains.
Service | Repository | Programing Language | Lead |
---|---|---|---|
Station | PHT-Medic/station | Python | migraf |
Desktop App | PHT-Medic/desktop-app | TypeScript | tada5hi |
Train Container Library | PHT-Medic/train-container-library | Python | migraf |
Station
- Local airflow instance for processing train imagesDesktop App
- GUI to manage key pairs and decrypt results locallyTrain Container Library
- Python library for validating and interacting with pht-train images/containers
Third-Party Service | Repository | Programing Language |
---|---|---|
Airflow | apache/airflow | Python/TypeScript |
Authup | tada5hi/authup | TypeScript |
Airflow
- An open source, community developed platform to programmatically author, schedule and monitor workflows and the primary component of the station.Authup
- Identity and Access Management (IAM) to manage users and roles.