# tak-product-center/atak-civ architecture

> Architecture diagram of the GitHub repository tak-product-center/atak-civ, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/tak-product-center/atak-civ
- Repository: https://github.com/tak-product-center/atak-civ

## Overview

ATAK-CIV is a mobile geospatial and situational-awareness application. Its broad user workflow is to view and work with map-based information, discover or import geospatial content, and communicate or share situational updates. The tree shows substantial map, content-service, model, CoT, chat, contact, attachment, and plugin capabilities. Source evidence is limited to selected excerpts and index references, so dashed links mark plausible but unverified runtime relationships; unsampled subsystems are represented only at their supported directory paths.

Main entry points: [`atak/ATAK/app/src/main/java/com/atakmap/android/model/Cesium3DTilesServiceQuery.java`](https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/model/Cesium3DTilesServiceQuery.java) (Cesium discovery), [`atak/ATAK/app/src/main/java/com/atakmap/android/model/viewer/io/FileStorageService.java`](https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/model/viewer/io/FileStorageService.java) (Model file access), [`atak/ATAK/app/src/main/java/com/atakmap/android/maps/MapView.java`](https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/maps/MapView.java) (Map view), [`atak/ATAK/app/src/main/java/com/atakmap/android/contentservices/ServiceQuery.java`](https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/contentservices/ServiceQuery.java) (Service query)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_map["Map and rendering"]
  node_mapview["Map view<br/>[MapView.java]"]
  node_renderer["GL rendering"]
end

subgraph group_content["Geospatial content"]
  node_content_query["Service query<br/>[ServiceQuery.java]"]
  node_cesium_query["Cesium discovery"]
  node_service["Content service<br/>[Service.java]"]
  node_model_files["Model file access"]
  node_file_system["File utilities"]
  node_io_provider["I/O abstraction"]
end

subgraph group_collaboration["Communications"]
  node_cot["CoT exchange<br/>[CotService.java]"]
  node_chat["Geo chat"]
  node_contacts["Contacts<br/>[Contacts.java]"]
  node_attachments["Attachments"]
  node_channels["Server channels"]
end

subgraph group_platform["Extension platform"]
  node_plugins["Plugin registry"]
  node_enrollment["Certificate enrollment"]
end

node_operator(("ATAK user"))

node_operator -.->|"views map"| node_mapview
node_mapview -.->|"renders through"| node_renderer
node_content_query -->|"lists services"| node_service
node_cesium_query -->|"creates services"| node_service
node_cesium_query -->|"implements query"| node_content_query
node_cesium_query -.->|"imports model data"| node_model_files
node_model_files -->|"uses file utilities"| node_file_system
node_model_files -->|"reads and writes"| node_io_provider
node_file_system -->|"delegates file I/O"| node_io_provider
node_operator -.->|"shares updates"| node_cot
node_cot -.->|"carries messages"| node_chat
node_chat -.->|"addresses peers"| node_contacts
node_operator -.->|"shares files"| node_attachments
node_operator -.->|"selects channels"| node_channels
node_operator -.->|"extends application"| node_plugins
node_operator -.->|"enrolls device"| node_enrollment

click node_mapview "https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/maps/MapView.java"
click node_renderer "https://github.com/tak-product-center/atak-civ/blob/main/takkernel/engine/src/main/java/com/atakmap/opengl/GLES20FixedPipeline.java"
click node_content_query "https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/contentservices/ServiceQuery.java"
click node_cesium_query "https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/model/Cesium3DTilesServiceQuery.java"
click node_service "https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/contentservices/Service.java"
click node_model_files "https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/model/viewer/io/FileStorageService.java"
click node_file_system "https://github.com/tak-product-center/atak-civ/blob/main/takkernel/engine/src/main/java/com/atakmap/coremap/filesystem/FileSystemUtils.java"
click node_io_provider "https://github.com/tak-product-center/atak-civ/blob/main/takkernel/engine/src/main/java/com/atakmap/coremap/io/IOProviderFactory.java"
click node_cot "https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/comms/CotService.java"
click node_chat "https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/chat/GeoChatService.java"
click node_contacts "https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/contact/Contacts.java"
click node_attachments "https://github.com/tak-product-center/atak-civ/tree/main/atak/ATAK/app/src/main/java/com/atakmap/android/attachment"
click node_channels "https://github.com/tak-product-center/atak-civ/tree/main/atak/ATAK/app/src/main/java/com/atakmap/android/channels"
click node_plugins "https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atak/plugins/impl/AtakPluginRegistry.java"
click node_enrollment "https://github.com/tak-product-center/atak-civ/blob/main/commoncommo/core/impl/enrollmentmanager.cpp"

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_mapview,node_renderer,node_operator toneBlue
class node_content_query,node_cesium_query,node_service,node_model_files,node_file_system,node_io_provider toneAmber
class node_cot,node_chat,node_contacts,node_attachments,node_channels toneMint
class node_plugins,node_enrollment toneRose
```

## Components

### Map and rendering

- [Map view](https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/maps/MapView.java): `atak/ATAK/app/src/main/java/com/atakmap/android/maps/MapView.java`
- [GL rendering](https://github.com/tak-product-center/atak-civ/blob/main/takkernel/engine/src/main/java/com/atakmap/opengl/GLES20FixedPipeline.java): `takkernel/engine/src/main/java/com/atakmap/opengl/GLES20FixedPipeline.java`

### Geospatial content

- [Service query](https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/contentservices/ServiceQuery.java): `atak/ATAK/app/src/main/java/com/atakmap/android/contentservices/ServiceQuery.java`
- [Cesium discovery](https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/model/Cesium3DTilesServiceQuery.java): `atak/ATAK/app/src/main/java/com/atakmap/android/model/Cesium3DTilesServiceQuery.java`
- [Content service](https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/contentservices/Service.java): `atak/ATAK/app/src/main/java/com/atakmap/android/contentservices/Service.java`
- [Model file access](https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/model/viewer/io/FileStorageService.java): `atak/ATAK/app/src/main/java/com/atakmap/android/model/viewer/io/FileStorageService.java`
- [File utilities](https://github.com/tak-product-center/atak-civ/blob/main/takkernel/engine/src/main/java/com/atakmap/coremap/filesystem/FileSystemUtils.java): `takkernel/engine/src/main/java/com/atakmap/coremap/filesystem/FileSystemUtils.java`
- [I/O abstraction](https://github.com/tak-product-center/atak-civ/blob/main/takkernel/engine/src/main/java/com/atakmap/coremap/io/IOProviderFactory.java): `takkernel/engine/src/main/java/com/atakmap/coremap/io/IOProviderFactory.java`

### Communications

- [CoT exchange](https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/comms/CotService.java): `atak/ATAK/app/src/main/java/com/atakmap/comms/CotService.java`
- [Geo chat](https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/chat/GeoChatService.java): `atak/ATAK/app/src/main/java/com/atakmap/android/chat/GeoChatService.java`
- [Contacts](https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atakmap/android/contact/Contacts.java): `atak/ATAK/app/src/main/java/com/atakmap/android/contact/Contacts.java`
- [Attachments](https://github.com/tak-product-center/atak-civ/tree/main/atak/ATAK/app/src/main/java/com/atakmap/android/attachment): `atak/ATAK/app/src/main/java/com/atakmap/android/attachment`
- [Server channels](https://github.com/tak-product-center/atak-civ/tree/main/atak/ATAK/app/src/main/java/com/atakmap/android/channels): `atak/ATAK/app/src/main/java/com/atakmap/android/channels`

### Extension platform

- [Plugin registry](https://github.com/tak-product-center/atak-civ/blob/main/atak/ATAK/app/src/main/java/com/atak/plugins/impl/AtakPluginRegistry.java): `atak/ATAK/app/src/main/java/com/atak/plugins/impl/AtakPluginRegistry.java`
- [Certificate enrollment](https://github.com/tak-product-center/atak-civ/blob/main/commoncommo/core/impl/enrollmentmanager.cpp): `commoncommo/core/impl/enrollmentmanager.cpp`

### Other components

- **ATAK user**

## Connections

- ATAK user → Map view: views map (evidence: `README.md`)
- Map view → GL rendering: renders through
- Service query → Content service: lists services (evidence: `atak/ATAK/app/src/main/java/com/atakmap/android/contentservices/ServiceQuery.java`)
- Cesium discovery → Content service: creates services (evidence: `atak/ATAK/app/src/main/java/com/atakmap/android/model/Cesium3DTilesServiceQuery.java`)
- Cesium discovery → Service query: implements query (evidence: `atak/ATAK/app/src/main/java/com/atakmap/android/model/Cesium3DTilesServiceQuery.java`)
- Cesium discovery → Model file access: imports model data
- Model file access → File utilities: uses file utilities (evidence: `atak/ATAK/app/src/main/java/com/atakmap/android/model/viewer/io/FileStorageService.java`)
- Model file access → I/O abstraction: reads and writes (evidence: `atak/ATAK/app/src/main/java/com/atakmap/android/model/viewer/io/FileStorageService.java`)
- File utilities → I/O abstraction: delegates file I/O (evidence: `takkernel/engine/src/main/java/com/atakmap/coremap/filesystem/FileSystemUtils.java`)
- ATAK user → CoT exchange: shares updates
- CoT exchange → Geo chat: carries messages
- Geo chat → Contacts: addresses peers
- ATAK user → Attachments: shares files
- ATAK user → Server channels: selects channels
- ATAK user → Plugin registry: extends application
- ATAK user → Certificate enrollment: enrolls device
