# kchayta32/d-mind-mobile-app architecture

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

- Interactive diagram: https://gitdiagram.com/kchayta32/d-mind-mobile-app
- Repository: https://github.com/kchayta32/d-mind-mobile-app

## Overview

D-MIND is a Thailand-focused disaster monitoring and emergency-response system, with the native Android app and Kotlin/Ktor gateway identified as the active product. The main user flow is viewing disaster information and alerts, then requesting help or submitting a report; map layers, analytics, weather, and Dr.Mind chat provide additional capabilities. The graph follows documented endpoints and sampled implementation; several app-to-gateway details and unsampled subsystem internals are represented only where the README supports them.

Main entry points: [`android/backend/src/main/kotlin/com/dmind/backend/routes`](https://github.com/kchayta32/d-mind-mobile-app/tree/main/android/backend/src/main/kotlin/com/dmind/backend/routes) (API routes), [`android/app/src/main/kotlin/com/dmind/app/MainActivity.kt`](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/MainActivity.kt) (Native app), [`android/app/src/main/kotlin/com/dmind/app/domain/usecase/DisasterUseCases.kt`](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/domain/usecase/DisasterUseCases.kt) (Map use cases), [`android/backend/src/main/kotlin/com/dmind/backend/service/DataAggregatorService.kt`](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/backend/src/main/kotlin/com/dmind/backend/service/DataAggregatorService.kt) (Data aggregation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Android app"]
  node_mobile["Native app<br/>[MainActivity.kt]"]
  node_dashboard["Dashboard<br/>[DashboardScreen.kt]"]
  node_map["Disaster map"]
  node_analytics_ui["Analytics view"]
  node_chat["Dr.Mind chat<br/>[ChatbotScreen.kt]"]
end

subgraph group_data["Disaster information"]
  node_map_domain["Map use cases"]
  node_disaster_repo["Disaster repository"]
  node_gistda_repo["GISTDA repository"]
  node_analytics_repo["Analytics repository"]
end

subgraph group_response["Emergency response"]
  node_background_location["Location tracking"]
  node_emergency_alert["Alert delivery"]
end

subgraph group_gateway["Backend gateway"]
  node_gateway_app["Gateway service<br/>[Application.kt]"]
  node_gateway_routes["API routes"]
  node_aggregator["Data aggregation"]
  node_alert_dispatch["Alert dispatch"]
end

subgraph group_integrations["External services"]
  node_cloud_store[("Supabase")]
  node_fcm["Firebase FCM"]
  node_disaster_sources["Disaster data sources"]
  node_weather_sources["Weather sources"]
  node_thai_llm["Thai LLM"]
end

node_person(("App user"))

node_person -->|"uses"| node_mobile
node_mobile -->|"shows"| node_dashboard
node_person -->|"views layers"| node_map
node_map -->|"requests data"| node_map_domain
node_map_domain -->|"loads data"| node_disaster_repo
node_map_domain -->|"loads GISTDA"| node_gistda_repo
node_person -->|"views trends"| node_analytics_ui
node_analytics_ui -->|"requests metrics"| node_analytics_repo
node_person -->|"asks questions"| node_chat
node_chat -->|"sends chat"| node_thai_llm
node_person -->|"enables tracking"| node_background_location
node_background_location -->|"caches location"| node_cloud_store
node_mobile -->|"calls API"| node_gateway_app
node_gateway_app -->|"registers routes"| node_gateway_routes
node_gateway_routes -->|"requests metrics"| node_aggregator
node_aggregator -->|"fetches events"| node_disaster_sources
node_aggregator -->|"fetches forecasts"| node_weather_sources
node_gateway_routes -->|"reads and writes"| node_cloud_store
node_gateway_routes -->|"requests dispatch"| node_alert_dispatch
node_alert_dispatch -->|"sends push"| node_fcm
node_fcm -->|"delivers message"| node_emergency_alert

click node_mobile "https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/MainActivity.kt"
click node_dashboard "https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/ui/screens/dashboard/DashboardScreen.kt"
click node_map "https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/ui/screens/map/DisasterMapScreen.kt"
click node_analytics_ui "https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/ui/screens/analytics/AnalyticsDashboardScreen.kt"
click node_chat "https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/ui/screens/chatbot/ChatbotScreen.kt"
click node_map_domain "https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/domain/usecase/DisasterUseCases.kt"
click node_disaster_repo "https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/data/repository/DefaultDisasterRepository.kt"
click node_gistda_repo "https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/data/repository/GistdaDisasterRepositoryImpl.kt"
click node_analytics_repo "https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/data/repository/AnalyticsRepository.kt"
click node_background_location "https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/java/com/dmind/app/service/BackgroundLocationService.java"
click node_emergency_alert "https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/java/com/dmind/app/service/FCMDataMessageService.java"
click node_gateway_app "https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/backend/src/main/kotlin/com/dmind/backend/Application.kt"
click node_gateway_routes "https://github.com/kchayta32/d-mind-mobile-app/tree/main/android/backend/src/main/kotlin/com/dmind/backend/routes"
click node_aggregator "https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/backend/src/main/kotlin/com/dmind/backend/service/DataAggregatorService.kt"
click node_alert_dispatch "https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/backend/src/main/kotlin/com/dmind/backend/service/AutomaticAlertDispatcher.kt"
click node_thai_llm "https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/network/ThaiLlmChatClient.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_mobile,node_dashboard,node_map,node_analytics_ui,node_chat,node_person toneBlue
class node_map_domain,node_disaster_repo,node_gistda_repo,node_analytics_repo toneAmber
class node_background_location,node_emergency_alert toneMint
class node_gateway_app,node_gateway_routes,node_aggregator,node_alert_dispatch toneRose
class node_cloud_store,node_fcm,node_disaster_sources,node_weather_sources,node_thai_llm toneIndigo
```

## Components

### Android app

- [Native app](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/MainActivity.kt): `android/app/src/main/kotlin/com/dmind/app/MainActivity.kt`
- [Dashboard](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/ui/screens/dashboard/DashboardScreen.kt): `android/app/src/main/kotlin/com/dmind/app/ui/screens/dashboard/DashboardScreen.kt`
- [Disaster map](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/ui/screens/map/DisasterMapScreen.kt): `android/app/src/main/kotlin/com/dmind/app/ui/screens/map/DisasterMapScreen.kt`
- [Analytics view](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/ui/screens/analytics/AnalyticsDashboardScreen.kt): `android/app/src/main/kotlin/com/dmind/app/ui/screens/analytics/AnalyticsDashboardScreen.kt`
- [Dr.Mind chat](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/ui/screens/chatbot/ChatbotScreen.kt): `android/app/src/main/kotlin/com/dmind/app/ui/screens/chatbot/ChatbotScreen.kt`

### Disaster information

- [Map use cases](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/domain/usecase/DisasterUseCases.kt): `android/app/src/main/kotlin/com/dmind/app/domain/usecase/DisasterUseCases.kt`
- [Disaster repository](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/data/repository/DefaultDisasterRepository.kt): `android/app/src/main/kotlin/com/dmind/app/data/repository/DefaultDisasterRepository.kt`
- [GISTDA repository](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/data/repository/GistdaDisasterRepositoryImpl.kt): `android/app/src/main/kotlin/com/dmind/app/data/repository/GistdaDisasterRepositoryImpl.kt`
- [Analytics repository](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/data/repository/AnalyticsRepository.kt): `android/app/src/main/kotlin/com/dmind/app/data/repository/AnalyticsRepository.kt`

### Emergency response

- [Location tracking](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/java/com/dmind/app/service/BackgroundLocationService.java): `android/app/src/main/java/com/dmind/app/service/BackgroundLocationService.java`
- [Alert delivery](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/java/com/dmind/app/service/FCMDataMessageService.java): `android/app/src/main/java/com/dmind/app/service/FCMDataMessageService.java`

### Backend gateway

- [Gateway service](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/backend/src/main/kotlin/com/dmind/backend/Application.kt): `android/backend/src/main/kotlin/com/dmind/backend/Application.kt`
- [API routes](https://github.com/kchayta32/d-mind-mobile-app/tree/main/android/backend/src/main/kotlin/com/dmind/backend/routes): `android/backend/src/main/kotlin/com/dmind/backend/routes`
- [Data aggregation](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/backend/src/main/kotlin/com/dmind/backend/service/DataAggregatorService.kt): `android/backend/src/main/kotlin/com/dmind/backend/service/DataAggregatorService.kt`
- [Alert dispatch](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/backend/src/main/kotlin/com/dmind/backend/service/AutomaticAlertDispatcher.kt): `android/backend/src/main/kotlin/com/dmind/backend/service/AutomaticAlertDispatcher.kt`

### External services

- **Supabase**
- **Firebase FCM**
- **Disaster data sources**
- **Weather sources**
- [Thai LLM](https://github.com/kchayta32/d-mind-mobile-app/blob/main/android/app/src/main/kotlin/com/dmind/app/network/ThaiLlmChatClient.kt): `android/app/src/main/kotlin/com/dmind/app/network/ThaiLlmChatClient.kt`

### Other components

- **App user**

## Connections

- App user → Native app: uses
- Native app → Dashboard: shows
- App user → Disaster map: views layers
- Disaster map → Map use cases: requests data
- Map use cases → Disaster repository: loads data
- Map use cases → GISTDA repository: loads GISTDA
- App user → Analytics view: views trends
- Analytics view → Analytics repository: requests metrics
- App user → Dr.Mind chat: asks questions
- Dr.Mind chat → Thai LLM: sends chat
- App user → Location tracking: enables tracking
- Location tracking → Supabase: caches location
- Native app → Gateway service: calls API
- Gateway service → API routes: registers routes
- API routes → Data aggregation: requests metrics
- Data aggregation → Disaster data sources: fetches events
- Data aggregation → Weather sources: fetches forecasts
- API routes → Supabase: reads and writes
- API routes → Alert dispatch: requests dispatch
- Alert dispatch → Firebase FCM: sends push
- Firebase FCM → Alert delivery: delivers message
