# Meddler: Development Guide

## Components

* **Watchdog**
* **Container Orchestrator** (K8S, Nomad, Docker Swarm)
* **Message Queue** (RabbitMQ)
* **Database** (MongoDB , ElasticSearch)
* **Object Store** (MinIO, S3)
* **Dashboard**
* **API Gateway**
* **Logging Pipeline** (Fluentd)
* **Pikachew** (Log Streamer)
* **Plugins** (Docker Containers)
* **Build Engine** (Watchdog Injector)
* **Registry** (Storage for plugin / docker Images)

## Plugins

A plugin is simply a Docker Image which can be published through:

* Dockerfile
* Package: .tar | .zip: ( Dockerfile must be present in the root directory)
* Git Url ( Dockerfile must be present in the root directory)
  * Public Git Repository
  * Private Git Repository with access token

{% hint style="info" %}
Docker container will by default use read-only file system, and only a handful of directories would be accessible for reading / writing data. Although, it is possible to provision a write-enabled filesystem,  making a read-only compatible plugin is recommended.
{% endhint %}

## &#x20;
