This document describes the CRMint architecture, to enable a better understanding of how it works, and also as a start point for customizing and contributing to the code base.
For more detail on pipelines, jobs, workers, and key concepts of what CRMint does, see the Concepts guide.
CRMint is a Cloud Run application, comprising 3 services:
frontend
, which serves the static components that make up the CRMint user interface.controller
, provides the means for the CRMint user interface to interact with the jobs
service.jobs
, performs the core actions of executing pipeline tasks.The CRMint user interface is an Angular project, and can be found in the frontend
directory.
This service provides the means for the UI to interact with the jobs
service,
it is the only service which has access to the Cloud SQL instance.
This includes:
You can find its source code in the backend/controller
directory.
Tasks are registered in our Pub/Sub topics. The jobs
service subscribes to
these topics to receive in push mode the tasks to execute.
Push mode enables our Cloud Run service to automatically detect high-load and spin up new instances if needed.
This service does not have access to the database, it is solely responsible to execute tasks and publish success messages back to Pub/Sub.
You can find its source code in the backend/jobs
directory.