Monorepo for Argus' backend. Services are written in Scala and Bazel is used as the build tool.
Run a service with Bazel using bazel run, for example api can be run as follows:
bazel run //api:api_binaryIt can be run with hot reloading using ibazel, for example again with
api as follows:
ibazel run //api:api_binaryKafka can be deployed locally with docker compose (see this article for details).
Use infra/docker-compose.yaml.
A Postgres extension that adds better support for handling timeseries data. See here for more details. Like
Kafka, configuration for a local TimescaleDB deployment is included in infra/, and an instance can be deployed
locally with infra/docker-compose.yaml
HTTP server that sits between clients and TimescaleDB--fetches data and exposes it on several endpoints, performing analytics and aggregation as necessary.
HTTP server that listens for messages from the extension and sends them to Kafka.
Kafka consumer--continuously polls for messages from Kafka and saves these messages in the database.
Contains common code, primarily data types used for communication between services.