# priyankjhajharia/emergencymeshapp architecture

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

- Interactive diagram: https://gitdiagram.com/priyankjhajharia/emergencymeshapp
- Repository: https://github.com/priyankjhajharia/emergencymeshapp

## Overview

EmergencyMesh is an offline-first Android emergency messaging app. Users chat with nearby peers over Bluetooth or WiFi Direct; messages can be stored and relayed through intermediate devices. SOS adds location sharing, emergency-contact SMS fallback, and an incoming-SOS alarm/notification path, while a foreground service keeps mesh communication available in the background. The README documents these capabilities, but source excerpts were not provided, so internal call ownership and several wiring details remain uncertain and are not drawn.

Main entry points: [`app/src/main/java/com/example/emergency_app/mesh/SmsHelper.kt`](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/mesh/SmsHelper.kt) (SMS helper), [`app/src/main/java/com/example/emergency_app/service/MeshService.kt`](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/service/MeshService.kt) (Background mesh service), [`app/src/main/java/com/example/emergency_app/MainActivity.kt`](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/MainActivity.kt) (Main screen), [`app/src/main/java/com/example/emergency_app/ui/ContactsActivity.kt`](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/ui/ContactsActivity.kt) (Contacts screen)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["App interface"]
  node_main["Main screen<br/>[MainActivity.kt]"]
  node_contacts_ui["Contacts screen"]
  node_profile_ui["Profile screen<br/>[ProfileActivity.kt]"]
  node_chat_adapter["Chat display<br/>[ChatAdapter.kt]"]
  node_contacts_adapter["Contact display<br/>[ContactsAdapter.kt]"]
end

subgraph group_mesh["Mesh communication"]
  node_service["Background mesh service<br/>[MeshService.kt]"]
  node_router["Mesh router<br/>[MeshRouter.kt]"]
  node_bluetooth["Bluetooth and BLE"]
  node_wifi["WiFi Direct"]
end

subgraph group_state["Local data"]
  node_database[("Room database<br/>[MessageDatabase.kt]")]
  node_message_dao["Message access<br/>[MessageDao.kt]"]
  node_message_model["Mesh message<br/>[MeshMessage.kt]"]
  node_contact_dao["Contact access<br/>[ContactDao.kt]"]
  node_contact_model["Emergency contact"]
end

subgraph group_sos["Emergency response"]
  node_location["Location helper<br/>[LocationHelper.kt]"]
  node_sms["SMS helper<br/>[SmsHelper.kt]"]
  node_notifications["Alarm and notifications"]
end

node_user(("Phone user"))
node_peer(("Nearby phones"))
node_android(("Android services"))
node_sms_network(("Cellular SMS"))

node_user -->|"uses"| node_main
node_user -->|"manages contacts"| node_contacts_ui
node_user -->|"views profile"| node_profile_ui
node_main -->|"shows conversations"| node_chat_adapter
node_contacts_ui -->|"shows contacts"| node_contacts_adapter
node_service -->|"maintains mesh"| node_bluetooth
node_service -->|"maintains mesh"| node_wifi
node_bluetooth -->|"Bluetooth / BLE"| node_peer
node_wifi -->|"WiFi Direct / TCP"| node_peer
node_peer -->|"messages"| node_bluetooth
node_peer -->|"messages"| node_wifi
node_service -->|"routes messages"| node_router
node_router -->|"stores messages"| node_message_dao
node_message_dao -->|"reads / writes"| node_database
node_contact_dao -->|"reads / writes"| node_database
node_contacts_ui -->|"manages contacts"| node_contact_dao
node_main -.->|"SOS location"| node_location
node_main -.->|"SOS fallback"| node_sms
node_sms -.->|"uses saved contacts"| node_contact_dao
node_sms -.->|"sends SOS text"| node_sms_network
node_sms_network -.->|"incoming SOS text"| node_sms
node_sms -.->|"triggers alarm"| node_notifications
node_service -->|"runs in foreground"| node_android
node_location -.->|"gets GPS location"| node_android

click node_main "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/MainActivity.kt"
click node_contacts_ui "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/ui/ContactsActivity.kt"
click node_profile_ui "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/ui/ProfileActivity.kt"
click node_chat_adapter "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/ui/ChatAdapter.kt"
click node_contacts_adapter "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/ui/ContactsAdapter.kt"
click node_service "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/service/MeshService.kt"
click node_router "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/mesh/MeshRouter.kt"
click node_bluetooth "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/bluetooth/BluetoothManager.kt"
click node_wifi "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/wifi/WifiDirectManager.kt"
click node_database "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/data/MessageDatabase.kt"
click node_message_dao "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/data/MessageDao.kt"
click node_message_model "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/data/MeshMessage.kt"
click node_contact_dao "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/data/ContactDao.kt"
click node_contact_model "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/data/EmergencyContact.kt"
click node_location "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/mesh/LocationHelper.kt"
click node_sms "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/mesh/SmsHelper.kt"
click node_notifications "https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/service/NotificationHelper.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_main,node_contacts_ui,node_profile_ui,node_chat_adapter,node_contacts_adapter,node_user toneBlue
class node_service,node_router,node_bluetooth,node_wifi toneAmber
class node_database,node_message_dao,node_message_model,node_contact_dao,node_contact_model toneMint
class node_location,node_sms,node_notifications toneRose
class node_peer,node_android,node_sms_network toneIndigo
```

## Components

### App interface

- [Main screen](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/MainActivity.kt): `app/src/main/java/com/example/emergency_app/MainActivity.kt`
- [Contacts screen](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/ui/ContactsActivity.kt): `app/src/main/java/com/example/emergency_app/ui/ContactsActivity.kt`
- [Profile screen](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/ui/ProfileActivity.kt): `app/src/main/java/com/example/emergency_app/ui/ProfileActivity.kt`
- [Chat display](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/ui/ChatAdapter.kt): `app/src/main/java/com/example/emergency_app/ui/ChatAdapter.kt`
- [Contact display](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/ui/ContactsAdapter.kt): `app/src/main/java/com/example/emergency_app/ui/ContactsAdapter.kt`

### Mesh communication

- [Background mesh service](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/service/MeshService.kt): `app/src/main/java/com/example/emergency_app/service/MeshService.kt`
- [Mesh router](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/mesh/MeshRouter.kt): `app/src/main/java/com/example/emergency_app/mesh/MeshRouter.kt`
- [Bluetooth and BLE](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/bluetooth/BluetoothManager.kt): `app/src/main/java/com/example/emergency_app/bluetooth/BluetoothManager.kt`
- [WiFi Direct](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/wifi/WifiDirectManager.kt): `app/src/main/java/com/example/emergency_app/wifi/WifiDirectManager.kt`

### Local data

- [Room database](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/data/MessageDatabase.kt): `app/src/main/java/com/example/emergency_app/data/MessageDatabase.kt`
- [Message access](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/data/MessageDao.kt): `app/src/main/java/com/example/emergency_app/data/MessageDao.kt`
- [Mesh message](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/data/MeshMessage.kt): `app/src/main/java/com/example/emergency_app/data/MeshMessage.kt`
- [Contact access](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/data/ContactDao.kt): `app/src/main/java/com/example/emergency_app/data/ContactDao.kt`
- [Emergency contact](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/data/EmergencyContact.kt): `app/src/main/java/com/example/emergency_app/data/EmergencyContact.kt`

### Emergency response

- [Location helper](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/mesh/LocationHelper.kt): `app/src/main/java/com/example/emergency_app/mesh/LocationHelper.kt`
- [SMS helper](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/mesh/SmsHelper.kt): `app/src/main/java/com/example/emergency_app/mesh/SmsHelper.kt`
- [Alarm and notifications](https://github.com/priyankjhajharia/emergencymeshapp/blob/main/app/src/main/java/com/example/emergency_app/service/NotificationHelper.kt): `app/src/main/java/com/example/emergency_app/service/NotificationHelper.kt`

### Other components

- **Phone user**
- **Nearby phones**
- **Android services**
- **Cellular SMS**

## Connections

- Phone user → Main screen: uses
- Phone user → Contacts screen: manages contacts
- Phone user → Profile screen: views profile
- Main screen → Chat display: shows conversations
- Contacts screen → Contact display: shows contacts
- Background mesh service → Bluetooth and BLE: maintains mesh
- Background mesh service → WiFi Direct: maintains mesh
- Bluetooth and BLE → Nearby phones: Bluetooth / BLE
- WiFi Direct → Nearby phones: WiFi Direct / TCP
- Nearby phones → Bluetooth and BLE: messages
- Nearby phones → WiFi Direct: messages
- Background mesh service → Mesh router: routes messages
- Mesh router → Message access: stores messages
- Message access → Room database: reads / writes
- Contact access → Room database: reads / writes
- Contacts screen → Contact access: manages contacts
- Main screen → Location helper: SOS location
- Main screen → SMS helper: SOS fallback
- SMS helper → Contact access: uses saved contacts
- SMS helper → Cellular SMS: sends SOS text
- Cellular SMS → SMS helper: incoming SOS text
- SMS helper → Alarm and notifications: triggers alarm
- Background mesh service → Android services: runs in foreground
- Location helper → Android services: gets GPS location
