# oiorga/walkie-talkie architecture

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

- Interactive diagram: https://gitdiagram.com/oiorga/walkie-talkie
- Repository: https://github.com/oiorga/walkie-talkie

## Overview

Walkie Talkie is a demo Android app for exchanging text messages between Android devices. A user navigates the Compose UI, selects a peer to open a discussion, and sends a message through the shared data hub and communication stack; peer discovery uses Android Wi-Fi Direct, while mesh state supports peer routing. The graph preserves the UI, chat, communication, discovery, and shared infrastructure branches. Evidence is limited to the README and supplied source/index references; unsampled subsystems are represented only at supported directory paths.

Main entry points: [`wifidirect/src/main/java/walkie/wifidirect/WTWifiDirectManager.kt`](https://github.com/oiorga/walkie-talkie/blob/main/wifidirect/src/main/java/walkie/wifidirect/WTWifiDirectManager.kt) (Wi-Fi Direct Manager), [`talkie/src/main/java/walkie/talkie/viewmodel/WTViewModel.kt`](https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/viewmodel/WTViewModel.kt) (View Model), [`comm/src/main/java/walkie/comm/WTComm.kt`](https://github.com/oiorga/walkie-talkie/blob/main/comm/src/main/java/walkie/comm/WTComm.kt) (Communication Facade), [`talkie/src/main/java/walkie/talkie/WTActivity.kt`](https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/WTActivity.kt) (Android Activity)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["App UI"]
  node_ui_screens["Compose Screens"]
  node_ui_navigation["Navigation<br/>[WTNav.kt]"]
  node_viewmodel["View Model<br/>[WTViewModel.kt]"]
  node_ui_helpers["UI Utilities<br/>[WTUiUtil.kt]"]
end

subgraph group_chat["Chat Domain"]
  node_chat_models["Chat Discussions"]
  node_chat_group["Chat Groups<br/>[WTChatGroup.kt]"]
  node_chat_message["Chat Messages<br/>[WTChatMessage.kt]"]
  node_discussion_map["Discussion Map"]
end

subgraph group_network["Peer Networking"]
  node_comm_facade["Communication Facade<br/>[WTComm.kt]"]
  node_prm["Peer Routing Mesh<br/>[WTPRMComm.kt]"]
  node_ip_comm["IP Transport<br/>[WTIPComm.kt]"]
  node_wifi_manager["Wi-Fi Direct Manager"]
  node_wifi_logic["Wi-Fi Direct Control<br/>[WTWifiDirect.kt]"]
end

subgraph group_platform["App Coordination"]
  node_activity["Android Activity<br/>[WTActivity.kt]"]
  node_data_hub["Data Hub<br/>[WTDataHub.kt]"]
  node_app_runtime["App Runtime<br/>[WalkieTalkie.kt]"]
end

subgraph group_infra["Shared Infrastructure"]
  node_message_bus["Message Bus<br/>[WTMessageBus.kt]"]
  node_remote_calls["Remote Call API<br/>[WTRemoteCall.kt]"]
  node_mesh_engine["Mesh Engine<br/>[Mesh.kt]"]
  node_event_dispatch["Event Dispatcher<br/>[EventDispatcher.kt]"]
  node_blocking_queue["Blocking Queue<br/>[BlockingQueue.kt]"]
  node_generic_collections["Generic Collections<br/>[List.kt]"]
end

node_user(("User"))
node_android_wifi["Android Wi-Fi P2P"]

node_user -->|"uses"| node_activity
node_activity -->|"hosts"| node_ui_screens
node_ui_screens -.->|"navigates via"| node_ui_navigation
node_ui_screens -->|"updates"| node_viewmodel
node_viewmodel -->|"sends messages"| node_data_hub
node_viewmodel -->|"opens discussions"| node_discussion_map
node_discussion_map -->|"uses"| node_message_bus
node_data_hub -->|"delegates communication"| node_comm_facade
node_data_hub -->|"coordinates discovery"| node_wifi_manager
node_activity -->|"initializes"| node_viewmodel
node_activity -->|"starts"| node_wifi_manager
node_app_runtime -->|"creates"| node_data_hub
node_app_runtime -->|"creates"| node_comm_facade
node_comm_facade -->|"routes packets"| node_prm
node_prm -->|"sends packets"| node_ip_comm
node_prm -->|"maintains peers"| node_mesh_engine
node_mesh_engine -->|"dispatches events"| node_event_dispatch
node_mesh_engine -->|"queues updates"| node_blocking_queue
node_ip_comm -->|"queues packets"| node_blocking_queue
node_wifi_manager -->|"controls"| node_wifi_logic
node_wifi_logic -->|"uses P2P service"| node_android_wifi
node_wifi_manager -->|"publishes messages"| node_message_bus
node_wifi_manager -->|"uses operations"| node_remote_calls
node_comm_facade -->|"routes messages"| node_message_bus
node_discussion_map -->|"uses"| node_remote_calls
node_ui_helpers -->|"references"| node_viewmodel
node_chat_models -.->|"models discussions"| node_chat_group
node_chat_message -.->|"exchanges messages"| node_comm_facade
node_generic_collections -->|"supports peer lists"| node_prm

click node_activity "https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/WTActivity.kt"
click node_ui_screens "https://github.com/oiorga/walkie-talkie/tree/main/talkie/src/main/java/walkie/talkie/ui/screens"
click node_ui_navigation "https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/ui/nav/WTNav.kt"
click node_viewmodel "https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/viewmodel/WTViewModel.kt"
click node_ui_helpers "https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/ui/util/WTUiUtil.kt"
click node_chat_models "https://github.com/oiorga/walkie-talkie/blob/main/chat/src/main/java/walkie/chat/WTChatDiscussion.kt"
click node_chat_group "https://github.com/oiorga/walkie-talkie/blob/main/chat/src/main/java/walkie/chat/WTChatGroup.kt"
click node_chat_message "https://github.com/oiorga/walkie-talkie/blob/main/chat/src/main/java/walkie/chat/WTChatMessage.kt"
click node_discussion_map "https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/globalmap/WTGlobalDiscussionMap.kt"
click node_data_hub "https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/common/WTDataHub.kt"
click node_app_runtime "https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/WalkieTalkie.kt"
click node_comm_facade "https://github.com/oiorga/walkie-talkie/blob/main/comm/src/main/java/walkie/comm/WTComm.kt"
click node_prm "https://github.com/oiorga/walkie-talkie/blob/main/comm/src/main/java/walkie/comm/prm/WTPRMComm.kt"
click node_ip_comm "https://github.com/oiorga/walkie-talkie/blob/main/comm/src/main/java/walkie/comm/ip/WTIPComm.kt"
click node_wifi_manager "https://github.com/oiorga/walkie-talkie/blob/main/wifidirect/src/main/java/walkie/wifidirect/WTWifiDirectManager.kt"
click node_wifi_logic "https://github.com/oiorga/walkie-talkie/blob/main/wifidirect/src/main/java/walkie/wifidirect/WTWifiDirect.kt"
click node_message_bus "https://github.com/oiorga/walkie-talkie/blob/main/talkie-api/src/main/java/walkie/talkie/api/WTMessageBus.kt"
click node_remote_calls "https://github.com/oiorga/walkie-talkie/blob/main/talkie-api/src/main/java/walkie/talkie/api/WTRemoteCall.kt"
click node_mesh_engine "https://github.com/oiorga/walkie-talkie/blob/main/util/src/main/java/walkie/util/mesh/Mesh.kt"
click node_event_dispatch "https://github.com/oiorga/walkie-talkie/blob/main/util/src/main/java/walkie/util/EventDispatcher.kt"
click node_blocking_queue "https://github.com/oiorga/walkie-talkie/blob/main/util/src/main/java/walkie/util/BlockingQueue.kt"
click node_generic_collections "https://github.com/oiorga/walkie-talkie/blob/main/util/src/main/java/walkie/util/List.kt"

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_ui_screens,node_ui_navigation,node_viewmodel,node_ui_helpers,node_user toneBlue
class node_chat_models,node_chat_group,node_chat_message,node_discussion_map toneAmber
class node_comm_facade,node_prm,node_ip_comm,node_wifi_manager,node_wifi_logic toneMint
class node_activity,node_data_hub,node_app_runtime toneRose
class node_message_bus,node_remote_calls,node_mesh_engine,node_event_dispatch,node_blocking_queue,node_generic_collections,node_android_wifi toneIndigo
```

## Components

### App UI

- [Compose Screens](https://github.com/oiorga/walkie-talkie/tree/main/talkie/src/main/java/walkie/talkie/ui/screens): `talkie/src/main/java/walkie/talkie/ui/screens`
- [Navigation](https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/ui/nav/WTNav.kt): `talkie/src/main/java/walkie/talkie/ui/nav/WTNav.kt`
- [View Model](https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/viewmodel/WTViewModel.kt): `talkie/src/main/java/walkie/talkie/viewmodel/WTViewModel.kt`
- [UI Utilities](https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/ui/util/WTUiUtil.kt): `talkie/src/main/java/walkie/talkie/ui/util/WTUiUtil.kt`

### Chat Domain

- [Chat Discussions](https://github.com/oiorga/walkie-talkie/blob/main/chat/src/main/java/walkie/chat/WTChatDiscussion.kt): `chat/src/main/java/walkie/chat/WTChatDiscussion.kt`
- [Chat Groups](https://github.com/oiorga/walkie-talkie/blob/main/chat/src/main/java/walkie/chat/WTChatGroup.kt): `chat/src/main/java/walkie/chat/WTChatGroup.kt`
- [Chat Messages](https://github.com/oiorga/walkie-talkie/blob/main/chat/src/main/java/walkie/chat/WTChatMessage.kt): `chat/src/main/java/walkie/chat/WTChatMessage.kt`
- [Discussion Map](https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/globalmap/WTGlobalDiscussionMap.kt): `talkie/src/main/java/walkie/talkie/globalmap/WTGlobalDiscussionMap.kt`

### Peer Networking

- [Communication Facade](https://github.com/oiorga/walkie-talkie/blob/main/comm/src/main/java/walkie/comm/WTComm.kt): `comm/src/main/java/walkie/comm/WTComm.kt`
- [Peer Routing Mesh](https://github.com/oiorga/walkie-talkie/blob/main/comm/src/main/java/walkie/comm/prm/WTPRMComm.kt): `comm/src/main/java/walkie/comm/prm/WTPRMComm.kt`
- [IP Transport](https://github.com/oiorga/walkie-talkie/blob/main/comm/src/main/java/walkie/comm/ip/WTIPComm.kt): `comm/src/main/java/walkie/comm/ip/WTIPComm.kt`
- [Wi-Fi Direct Manager](https://github.com/oiorga/walkie-talkie/blob/main/wifidirect/src/main/java/walkie/wifidirect/WTWifiDirectManager.kt): `wifidirect/src/main/java/walkie/wifidirect/WTWifiDirectManager.kt`
- [Wi-Fi Direct Control](https://github.com/oiorga/walkie-talkie/blob/main/wifidirect/src/main/java/walkie/wifidirect/WTWifiDirect.kt): `wifidirect/src/main/java/walkie/wifidirect/WTWifiDirect.kt`

### App Coordination

- [Android Activity](https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/WTActivity.kt): `talkie/src/main/java/walkie/talkie/WTActivity.kt`
- [Data Hub](https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/common/WTDataHub.kt): `talkie/src/main/java/walkie/talkie/common/WTDataHub.kt`
- [App Runtime](https://github.com/oiorga/walkie-talkie/blob/main/talkie/src/main/java/walkie/talkie/WalkieTalkie.kt): `talkie/src/main/java/walkie/talkie/WalkieTalkie.kt`

### Shared Infrastructure

- [Message Bus](https://github.com/oiorga/walkie-talkie/blob/main/talkie-api/src/main/java/walkie/talkie/api/WTMessageBus.kt): `talkie-api/src/main/java/walkie/talkie/api/WTMessageBus.kt`
- [Remote Call API](https://github.com/oiorga/walkie-talkie/blob/main/talkie-api/src/main/java/walkie/talkie/api/WTRemoteCall.kt): `talkie-api/src/main/java/walkie/talkie/api/WTRemoteCall.kt`
- [Mesh Engine](https://github.com/oiorga/walkie-talkie/blob/main/util/src/main/java/walkie/util/mesh/Mesh.kt): `util/src/main/java/walkie/util/mesh/Mesh.kt`
- [Event Dispatcher](https://github.com/oiorga/walkie-talkie/blob/main/util/src/main/java/walkie/util/EventDispatcher.kt): `util/src/main/java/walkie/util/EventDispatcher.kt`
- [Blocking Queue](https://github.com/oiorga/walkie-talkie/blob/main/util/src/main/java/walkie/util/BlockingQueue.kt): `util/src/main/java/walkie/util/BlockingQueue.kt`
- [Generic Collections](https://github.com/oiorga/walkie-talkie/blob/main/util/src/main/java/walkie/util/List.kt): `util/src/main/java/walkie/util/List.kt`

### Other components

- **User**
- **Android Wi-Fi P2P**

## Connections

- User → Android Activity: uses (evidence: `README.md`)
- Android Activity → Compose Screens: hosts (evidence: `talkie/src/main/java/walkie/talkie/WTActivity.kt`)
- Compose Screens → Navigation: navigates via
- Compose Screens → View Model: updates (evidence: `talkie/src/main/java/walkie/talkie/ui/util/WTUiUtil.kt`)
- View Model → Data Hub: sends messages (evidence: `talkie/src/main/java/walkie/talkie/viewmodel/WTViewModel.kt`)
- View Model → Discussion Map: opens discussions (evidence: `talkie/src/main/java/walkie/talkie/viewmodel/WTViewModel.kt`)
- Discussion Map → Message Bus: uses (evidence: `talkie/src/main/java/walkie/talkie/globalmap/WTGlobalDiscussionMap.kt`)
- Data Hub → Communication Facade: delegates communication (evidence: `talkie/src/main/java/walkie/talkie/common/WTDataHub.kt`)
- Data Hub → Wi-Fi Direct Manager: coordinates discovery (evidence: `talkie/src/main/java/walkie/talkie/common/WTDataHub.kt`)
- Android Activity → View Model: initializes (evidence: `talkie/src/main/java/walkie/talkie/WTActivity.kt`)
- Android Activity → Wi-Fi Direct Manager: starts (evidence: `talkie/src/main/java/walkie/talkie/WTActivity.kt`)
- App Runtime → Data Hub: creates (evidence: `talkie/src/main/java/walkie/talkie/WalkieTalkie.kt`)
- App Runtime → Communication Facade: creates (evidence: `talkie/src/main/java/walkie/talkie/WalkieTalkie.kt`)
- Communication Facade → Peer Routing Mesh: routes packets (evidence: `comm/src/main/java/walkie/comm/WTComm.kt`)
- Peer Routing Mesh → IP Transport: sends packets (evidence: `comm/src/main/java/walkie/comm/prm/WTPRMComm.kt`)
- Peer Routing Mesh → Mesh Engine: maintains peers (evidence: `comm/src/main/java/walkie/comm/prm/WTPRMComm.kt`)
- Mesh Engine → Event Dispatcher: dispatches events (evidence: `util/src/main/java/walkie/util/mesh/Mesh.kt`)
- Mesh Engine → Blocking Queue: queues updates (evidence: `util/src/main/java/walkie/util/mesh/Mesh.kt`)
- IP Transport → Blocking Queue: queues packets (evidence: `comm/src/main/java/walkie/comm/ip/WTIPComm.kt`)
- Wi-Fi Direct Manager → Wi-Fi Direct Control: controls (evidence: `wifidirect/src/main/java/walkie/wifidirect/WTWifiDirectManager.kt`)
- Wi-Fi Direct Control → Android Wi-Fi P2P: uses P2P service (evidence: `wifidirect/src/main/java/walkie/wifidirect/WTWifiDirect.kt`)
- Wi-Fi Direct Manager → Message Bus: publishes messages (evidence: `wifidirect/src/main/java/walkie/wifidirect/WTWifiDirectManager.kt`)
- Wi-Fi Direct Manager → Remote Call API: uses operations (evidence: `wifidirect/src/main/java/walkie/wifidirect/WTWifiDirectManager.kt`)
- Communication Facade → Message Bus: routes messages (evidence: `comm/src/main/java/walkie/comm/WTComm.kt`)
- Discussion Map → Remote Call API: uses (evidence: `talkie/src/main/java/walkie/talkie/globalmap/WTGlobalDiscussionMap.kt`)
- UI Utilities → View Model: references (evidence: `talkie/src/main/java/walkie/talkie/ui/util/WTUiUtil.kt`)
- Chat Discussions → Chat Groups: models discussions
- Chat Messages → Communication Facade: exchanges messages
- Generic Collections → Peer Routing Mesh: supports peer lists (evidence: `comm/src/main/java/walkie/comm/WTComm.kt`)
