# texttechnologylab/dockerunifieduimainterface architecture

> Architecture diagram of the GitHub repository texttechnologylab/dockerunifieduimainterface, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/texttechnologylab/dockerunifieduimainterface
- Repository: https://github.com/texttechnologylab/dockerunifieduimainterface

## Overview

DUUI is a Java framework for composing scalable UIMA analysis pipelines over text and multimodal corpora. Users supply documents, configure components and drivers, and execute analysis; readers, segmentation, communication, and output/storage support that workflow. Documented drivers cover local UIMA, Docker, remote REST, Swarm, Kubernetes, Podman, and Ray. The graph preserves these capabilities and performance monitoring/storage. Several subsystem internals are unsampled, so their connections are shown only where the README or excerpts support them; dashed edges indicate unverified integration.

Main entry points: [`src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIPipelineComponent.java`](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIPipelineComponent.java) (Analysis components), [`src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIComposer.java`](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIComposer.java) (Composer), [`src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/IDUUIStorageBackend.java`](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/IDUUIStorageBackend.java) (Storage backend API), [`src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/DUUIPipelineDocumentPerformance.java`](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/DUUIPipelineDocumentPerformance.java) (Performance metrics)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_pipeline["Pipeline orchestration"]
  node_composer["Composer<br/>[DUUIComposer.java]"]
  node_description["Pipeline description"]
  node_component_config["Component config"]
end

subgraph group_processing["Document processing"]
  node_readers["Document readers"]
  node_segmentation["Segmentation"]
  node_output["Document output"]
end

subgraph group_execution["Component execution"]
  node_components["Analysis components"]
  node_driver_api["Driver interface"]
  node_uima_driver["UIMA driver"]
  node_docker_driver["Docker driver"]
  node_remote_driver["Remote driver"]
  node_cluster_drivers["Cluster drivers"]
  node_ray_driver["Ray driver<br/>[DUUIRayDriver.java]"]
  node_communication["Communication layer"]
end

subgraph group_operations["Monitoring and storage"]
  node_monitor["Monitoring<br/>[DUUIMonitor.java]"]
  node_performance["Performance metrics"]
  node_storage_api["Storage backend API"]
  node_sqlite[("SQLite backend")]
  node_arangodb[("ArangoDB backend")]
  node_mongodb[("MongoDB backend")]
  node_postgres[("PostgreSQL backend")]
end

node_user(("Pipeline user"))

node_user -->|"configures"| node_description
node_user -->|"runs"| node_composer
node_composer -->|"registers drivers"| node_driver_api
node_components -->|"runs with"| node_uima_driver
node_components -->|"runs with"| node_docker_driver
node_components -->|"runs with"| node_remote_driver
node_components -->|"runs with"| node_cluster_drivers
node_components -->|"runs with"| node_ray_driver
node_readers -.->|"supplies documents"| node_segmentation
node_composer -.->|"executes pipeline"| node_components
node_components -.->|"communicates through"| node_communication
node_composer -.->|"writes results"| node_output
node_composer -.->|"reports status"| node_monitor
node_composer -.->|"records timings"| node_performance
node_performance -->|"provides metrics"| node_storage_api
node_storage_api -.->|"implemented by"| node_sqlite
node_storage_api -.->|"implemented by"| node_arangodb
node_storage_api -.->|"implemented by"| node_mongodb
node_storage_api -.->|"implemented by"| node_postgres

click node_composer "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIComposer.java"
click node_description "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIPipelineDescription.java"
click node_component_config "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIPipelineComponent.java"
click node_readers "https://github.com/texttechnologylab/dockerunifieduimainterface/tree/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/io/reader"
click node_segmentation "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/segmentation/DUUISegmentationStrategy.java"
click node_components "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIPipelineComponent.java"
click node_driver_api "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/IDUUIDriverInterface.java"
click node_uima_driver "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIUIMADriver.java"
click node_docker_driver "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIDockerDriver.java"
click node_remote_driver "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIRemoteDriver.java"
click node_cluster_drivers "https://github.com/texttechnologylab/dockerunifieduimainterface/tree/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver"
click node_ray_driver "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIRayDriver.java"
click node_communication "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/IDUUICommunicationLayer.java"
click node_output "https://github.com/texttechnologylab/dockerunifieduimainterface/tree/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/io/writer"
click node_monitor "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/monitoring/DUUIMonitor.java"
click node_performance "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/DUUIPipelineDocumentPerformance.java"
click node_storage_api "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/IDUUIStorageBackend.java"
click node_sqlite "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/sqlite/DUUISqliteStorageBackend.java"
click node_arangodb "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/arangodb/DUUIArangoDBStorageBackend.java"
click node_mongodb "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/mongodb/DUUIMongoDBStorageBackend.java"
click node_postgres "https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/postgres/DUUIPostgresSQLStorageBackend.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_composer,node_description,node_component_config,node_user toneBlue
class node_readers,node_segmentation,node_output toneAmber
class node_components,node_driver_api,node_uima_driver,node_docker_driver,node_remote_driver,node_cluster_drivers,node_ray_driver,node_communication toneMint
class node_monitor,node_performance,node_storage_api,node_sqlite,node_arangodb,node_mongodb,node_postgres toneRose
```

## Components

### Pipeline orchestration

- [Composer](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIComposer.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIComposer.java`
- [Pipeline description](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIPipelineDescription.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIPipelineDescription.java`
- [Component config](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIPipelineComponent.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIPipelineComponent.java`

### Document processing

- [Document readers](https://github.com/texttechnologylab/dockerunifieduimainterface/tree/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/io/reader): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/io/reader`
- [Segmentation](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/segmentation/DUUISegmentationStrategy.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/segmentation/DUUISegmentationStrategy.java`
- [Document output](https://github.com/texttechnologylab/dockerunifieduimainterface/tree/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/io/writer): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/io/writer`

### Component execution

- [Analysis components](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIPipelineComponent.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIPipelineComponent.java`
- [Driver interface](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/IDUUIDriverInterface.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/IDUUIDriverInterface.java`
- [UIMA driver](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIUIMADriver.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIUIMADriver.java`
- [Docker driver](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIDockerDriver.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIDockerDriver.java`
- [Remote driver](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIRemoteDriver.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIRemoteDriver.java`
- [Cluster drivers](https://github.com/texttechnologylab/dockerunifieduimainterface/tree/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver`
- [Ray driver](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIRayDriver.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/driver/DUUIRayDriver.java`
- [Communication layer](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/IDUUICommunicationLayer.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/IDUUICommunicationLayer.java`

### Monitoring and storage

- [Monitoring](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/monitoring/DUUIMonitor.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/monitoring/DUUIMonitor.java`
- [Performance metrics](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/DUUIPipelineDocumentPerformance.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/DUUIPipelineDocumentPerformance.java`
- [Storage backend API](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/IDUUIStorageBackend.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/IDUUIStorageBackend.java`
- [SQLite backend](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/sqlite/DUUISqliteStorageBackend.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/sqlite/DUUISqliteStorageBackend.java`
- [ArangoDB backend](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/arangodb/DUUIArangoDBStorageBackend.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/arangodb/DUUIArangoDBStorageBackend.java`
- [MongoDB backend](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/mongodb/DUUIMongoDBStorageBackend.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/mongodb/DUUIMongoDBStorageBackend.java`
- [PostgreSQL backend](https://github.com/texttechnologylab/dockerunifieduimainterface/blob/main/src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/postgres/DUUIPostgresSQLStorageBackend.java): `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/postgres/DUUIPostgresSQLStorageBackend.java`

### Other components

- **Pipeline user**

## Connections

- Pipeline user → Pipeline description: configures (evidence: `README.md`)
- Pipeline user → Composer: runs (evidence: `README.md`)
- Composer → Driver interface: registers drivers (evidence: `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIComposer.java`)
- Analysis components → UIMA driver: runs with (evidence: `README.md`)
- Analysis components → Docker driver: runs with (evidence: `README.md`)
- Analysis components → Remote driver: runs with (evidence: `README.md`)
- Analysis components → Cluster drivers: runs with (evidence: `README.md`)
- Analysis components → Ray driver: runs with (evidence: `README.md`)
- Document readers → Segmentation: supplies documents
- Composer → Analysis components: executes pipeline (evidence: `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIComposer.java`)
- Analysis components → Communication layer: communicates through
- Composer → Document output: writes results
- Composer → Monitoring: reports status (evidence: `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIComposer.java`)
- Composer → Performance metrics: records timings (evidence: `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/DUUIComposer.java`)
- Performance metrics → Storage backend API: provides metrics (evidence: `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/IDUUIStorageBackend.java`)
- Storage backend API → SQLite backend: implemented by (evidence: `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/sqlite/DUUISqliteStorageBackend.java`)
- Storage backend API → ArangoDB backend: implemented by (evidence: `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/arangodb/DUUIArangoDBStorageBackend.java`)
- Storage backend API → MongoDB backend: implemented by (evidence: `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/mongodb/DUUIMongoDBStorageBackend.java`)
- Storage backend API → PostgreSQL backend: implemented by (evidence: `src/main/java/org/texttechnologylab/DockerUnifiedUIMAInterface/pipeline_storage/postgres/DUUIPostgresSQLStorageBackend.java`)
