# Appmixer Architecture

## High-Level Architecture

Appmixer consists of multiple technologies that interact with each other:

![Appmixer High-Level Architecture](https://4163739060-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LATDgYqVMe0hChW7efU%2F-M8yO_tONtL5blIqy73m%2F-M8yPT_rKsRd5uzmFLon%2FAppmixer%20High-Level%20Architecture.png?alt=media\&token=c2364909-2b11-4f0c-b963-1928eb65482c)

* **Appmixer Engine**: the main system that manages flows, orchestrates components within running flows and provides a HTTP REST API interface to access all the entities within Appmixer. The Appmixer engine is implemented in NodeJS and can run on a single node or in cluster. The engine is horizontally scalable providing high availability and fault tolerance capabilities.
* **Appmixer UI SDK**: the JavaScript HTML 5 SDK that allows to seamlessly embed any of the Appmixer UI widgets (including the drag\&drop flow designer) to any 3rd party web page. The SDK communicates with the engine via REST API.
* **Appmixer Backoffice**: the admin panel UI providing overview of all the flows and users in Appmixer together with configuration.
* **Appmixer CLI**: the command line tool that is mainly used to manage custom connectors (upload, delete, ...).
* **Supporting Technologies**: RabbitMQ message broker, MongoDB NoSQL database, ElasticSearch search engine, Logstash collector of logs and Redis key-value store. All the supporting technologies can also run either on a single node or in cluster.
