# algorift169/meshdrop architecture

> Architecture diagram of the GitHub repository algorift169/meshdrop, 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/algorift169/meshdrop
- Repository: https://github.com/algorift169/meshdrop

## Overview

MeshDrop is a native Android prototype for offline-first peer communication. Users navigate among mesh, chat, file, and profile screens; chat messages and profile details persist locally. Chat supports conversation lists, opening a conversation, sending and displaying messages, and deleting conversations through its repository and SQLite storage. The README explicitly says peer discovery, network delivery, and file transfers are not implemented. The graph shows documented capabilities, but omits runtime links for unsampled screens where their wiring is not evidenced.

Main entry points: [`app/src/main/java/com/meshdrop/database/repository/ChatRepositoryImpl.java`](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/repository/ChatRepositoryImpl.java) (Chat repository), [`app/src/main/java/com/meshdrop/ui/activity/MainActivity.java`](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/ui/activity/MainActivity.java) (Main navigation), [`app/src/main/java/com/meshdrop/database/dao/ConversationDao.java`](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/dao/ConversationDao.java) (Conversation DAO), [`app/src/main/java/com/meshdrop/database/dao/MessageDao.java`](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/dao/MessageDao.java) (Message DAO)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_navigation["App navigation"]
  node_main["Main navigation<br/>[MainActivity.java]"]
end

subgraph group_communication["Chat experience"]
  node_chat["Chat screen<br/>[ChatFragment.java]"]
  node_conversation["Conversation model<br/>[Conversation.java]"]
  node_message["Message model<br/>[Message.java]"]
end

subgraph group_storage["Local persistence"]
  node_repository["Chat repository"]
  node_repoapi["Repository interface"]
  node_conversationdao["Conversation DAO"]
  node_messagedao["Message DAO<br/>[MessageDao.java]"]
  node_conversationentity["Conversation record"]
  node_messageentity["Message record<br/>[MessageEntity.java]"]
  node_database[("Chat database")]
end

subgraph group_features["Other features"]
  node_mesh["Mesh screen<br/>[MeshFragment.java]"]
  node_radar["Radar display<br/>[RadarView.java]"]
  node_files["Files screen<br/>[FilesFragment.java]"]
  node_profile["Profile screen"]
  node_theme["Theme preferences"]
  node_profiledata["Profile data<br/>[Profile.java]"]
end

node_user(("User"))

node_user -->|"navigates"| node_main
node_main -->|"dispatches to"| node_mesh
node_main -->|"dispatches to"| node_chat
node_main -->|"dispatches to"| node_files
node_main -->|"dispatches to"| node_profile
node_main -->|"applies theme"| node_theme
node_mesh -->|"toggles theme"| node_theme
node_chat -->|"loads and saves"| node_repository
node_repository -->|"implements"| node_repoapi
node_repository -->|"opens database"| node_database
node_repository -->|"calls"| node_conversationdao
node_repository -->|"calls"| node_messagedao
node_repository -->|"builds"| node_conversation
node_repository -->|"builds"| node_message
node_conversationdao -->|"queries"| node_database
node_messagedao -->|"queries"| node_database
node_conversationdao -->|"maps records"| node_conversationentity
node_messagedao -->|"maps records"| node_messageentity
node_profile -.->|"edits profile"| node_profiledata

click node_main "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/ui/activity/MainActivity.java"
click node_mesh "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/ui/fragment/MeshFragment.java"
click node_radar "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/ui/RadarView.java"
click node_chat "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/ui/fragment/ChatFragment.java"
click node_files "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/ui/fragment/FilesFragment.java"
click node_profile "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/ui/fragment/ProfileFragment.java"
click node_theme "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/ui/activity/ThemePreferences.java"
click node_profiledata "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/identity/Profile.java"
click node_repository "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/repository/ChatRepositoryImpl.java"
click node_repoapi "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/repository/ChatRepository.java"
click node_conversation "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/data/model/Conversation.java"
click node_message "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/data/model/Message.java"
click node_conversationdao "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/dao/ConversationDao.java"
click node_messagedao "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/dao/MessageDao.java"
click node_conversationentity "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/entity/ConversationEntity.java"
click node_messageentity "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/entity/MessageEntity.java"
click node_database "https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/MeshDropDatabase.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_main,node_user toneBlue
class node_chat,node_conversation,node_message toneAmber
class node_repository,node_repoapi,node_conversationdao,node_messagedao,node_conversationentity,node_messageentity,node_database toneMint
class node_mesh,node_radar,node_files,node_profile,node_theme,node_profiledata toneRose
```

## Components

### App navigation

- [Main navigation](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/ui/activity/MainActivity.java): `app/src/main/java/com/meshdrop/ui/activity/MainActivity.java`

### Chat experience

- [Chat screen](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/ui/fragment/ChatFragment.java): `app/src/main/java/com/meshdrop/ui/fragment/ChatFragment.java`
- [Conversation model](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/data/model/Conversation.java): `app/src/main/java/com/meshdrop/data/model/Conversation.java`
- [Message model](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/data/model/Message.java): `app/src/main/java/com/meshdrop/data/model/Message.java`

### Local persistence

- [Chat repository](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/repository/ChatRepositoryImpl.java): `app/src/main/java/com/meshdrop/database/repository/ChatRepositoryImpl.java`
- [Repository interface](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/repository/ChatRepository.java): `app/src/main/java/com/meshdrop/database/repository/ChatRepository.java`
- [Conversation DAO](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/dao/ConversationDao.java): `app/src/main/java/com/meshdrop/database/dao/ConversationDao.java`
- [Message DAO](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/dao/MessageDao.java): `app/src/main/java/com/meshdrop/database/dao/MessageDao.java`
- [Conversation record](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/entity/ConversationEntity.java): `app/src/main/java/com/meshdrop/database/entity/ConversationEntity.java`
- [Message record](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/entity/MessageEntity.java): `app/src/main/java/com/meshdrop/database/entity/MessageEntity.java`
- [Chat database](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/database/MeshDropDatabase.java): `app/src/main/java/com/meshdrop/database/MeshDropDatabase.java`

### Other features

- [Mesh screen](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/ui/fragment/MeshFragment.java): `app/src/main/java/com/meshdrop/ui/fragment/MeshFragment.java`
- [Radar display](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/ui/RadarView.java): `app/src/main/java/com/meshdrop/ui/RadarView.java`
- [Files screen](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/ui/fragment/FilesFragment.java): `app/src/main/java/com/meshdrop/ui/fragment/FilesFragment.java`
- [Profile screen](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/ui/fragment/ProfileFragment.java): `app/src/main/java/com/meshdrop/ui/fragment/ProfileFragment.java`
- [Theme preferences](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/ui/activity/ThemePreferences.java): `app/src/main/java/com/meshdrop/ui/activity/ThemePreferences.java`
- [Profile data](https://github.com/algorift169/meshdrop/blob/main/app/src/main/java/com/meshdrop/identity/Profile.java): `app/src/main/java/com/meshdrop/identity/Profile.java`

### Other components

- **User**

## Connections

- User → Main navigation: navigates (evidence: `app/src/main/java/com/meshdrop/ui/activity/MainActivity.java`)
- Main navigation → Mesh screen: dispatches to (evidence: `app/src/main/java/com/meshdrop/ui/activity/MainActivity.java`)
- Main navigation → Chat screen: dispatches to (evidence: `app/src/main/java/com/meshdrop/ui/activity/MainActivity.java`)
- Main navigation → Files screen: dispatches to (evidence: `app/src/main/java/com/meshdrop/ui/activity/MainActivity.java`)
- Main navigation → Profile screen: dispatches to (evidence: `app/src/main/java/com/meshdrop/ui/activity/MainActivity.java`)
- Main navigation → Theme preferences: applies theme (evidence: `app/src/main/java/com/meshdrop/ui/activity/MainActivity.java`)
- Mesh screen → Theme preferences: toggles theme (evidence: `app/src/main/java/com/meshdrop/ui/fragment/MeshFragment.java`)
- Chat screen → Chat repository: loads and saves (evidence: `app/src/main/java/com/meshdrop/ui/fragment/ChatFragment.java`)
- Chat repository → Repository interface: implements (evidence: `app/src/main/java/com/meshdrop/database/repository/ChatRepositoryImpl.java`)
- Chat repository → Chat database: opens database (evidence: `app/src/main/java/com/meshdrop/database/repository/ChatRepositoryImpl.java`)
- Chat repository → Conversation DAO: calls (evidence: `app/src/main/java/com/meshdrop/database/repository/ChatRepositoryImpl.java`)
- Chat repository → Message DAO: calls (evidence: `app/src/main/java/com/meshdrop/database/repository/ChatRepositoryImpl.java`)
- Chat repository → Conversation model: builds (evidence: `app/src/main/java/com/meshdrop/database/repository/ChatRepositoryImpl.java`)
- Chat repository → Message model: builds (evidence: `app/src/main/java/com/meshdrop/database/repository/ChatRepositoryImpl.java`)
- Conversation DAO → Chat database: queries (evidence: `app/src/main/java/com/meshdrop/database/dao/ConversationDao.java`)
- Message DAO → Chat database: queries (evidence: `app/src/main/java/com/meshdrop/database/dao/MessageDao.java`)
- Conversation DAO → Conversation record: maps records (evidence: `app/src/main/java/com/meshdrop/database/dao/ConversationDao.java`)
- Message DAO → Message record: maps records (evidence: `app/src/main/java/com/meshdrop/database/dao/MessageDao.java`)
- Profile screen → Profile data: edits profile
