# kaagaaz/waypoint architecture

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

- Interactive diagram: https://gitdiagram.com/kaagaaz/waypoint
- Repository: https://github.com/kaagaaz/waypoint

## Overview

Waypoint is an Android hotspot-security app. The user opens the dashboard and starts monitoring; the foreground honeypot service listens on configured ports, records connection attempts, and can start the VPN-based protection service. Threat records feed the incident-log feature, while settings cover theme and auto-resolve preferences. The README also describes packet inspection, scan/ARP-spoofing detection, packet blocking, and deceptive honeypot responses, but the sampled service excerpt only demonstrates port listeners and connection logging; those deeper capabilities are not represented as implemented flows here.

Main entry points: [`app/java+kotlin/com.example.waypointv12/service/HoneypotService.kt`](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/service/HoneypotService.kt) (Honeypot listener), [`app/java+kotlin/com.example.waypointv12/UI/Navigation/WayPointAdaptiveScaffold.kt`](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Navigation/WayPointAdaptiveScaffold.kt) (App navigation), [`app/java+kotlin/com.example.waypointv12/MainActivity.kt`](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/MainActivity.kt) (Main activity), [`app/java+kotlin/com.example.waypointv12/UI/Dashboard/dashboardScreen.kt`](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Dashboard/dashboardScreen.kt) (Dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["App experience"]
  node_activity["Main activity<br/>[MainActivity.kt]"]
  node_scaffold["App navigation"]
  node_dashboard["Dashboard<br/>[dashboardScreen.kt]"]
  node_dashboardvm["Dashboard state"]
  node_logs["Incident log<br/>[LogSreeen.kt]"]
  node_logvm["Log state<br/>[LogViewModel.kt]"]
  node_settings["Settings<br/>[SettingSreeen.kt]"]
  node_menu["Menu<br/>[MenuScreen.kt]"]
end

subgraph group_monitor["Threat monitoring"]
  node_honeypot["Honeypot listener<br/>[HoneypotService.kt]"]
  node_scanner["File scanner<br/>[FileScanner.kt]"]
end

subgraph group_protection["Protection"]
  node_core["VPN protection"]
end

subgraph group_data["State and records"]
  node_prefs[("User preferences")]
  node_db[("Threat database<br/>[AppDatabase.kt]")]
  node_repo["Threat repository"]
  node_dao["Threat DAO<br/>[ThreatDao.kt]"]
  node_threat["Threat record<br/>[Threat.kt]"]
  node_securestore[("Encrypted storage")]
end

node_user(("User"))
node_attacker(("Network host"))
node_network(("Android network"))

node_user -->|"opens app"| node_activity
node_activity -->|"shows UI"| node_scaffold
node_activity -->|"starts service"| node_honeypot
node_activity -->|"starts service"| node_core
node_scaffold -->|"routes to"| node_dashboard
node_scaffold -->|"routes to"| node_logs
node_scaffold -->|"routes to"| node_settings
node_scaffold -->|"routes to"| node_menu
node_dashboard -->|"requests state"| node_dashboardvm
node_dashboardvm -->|"runs scan"| node_scanner
node_honeypot -->|"observes connectivity"| node_network
node_attacker -->|"connects to port"| node_honeypot
node_honeypot -->|"inserts threat"| node_repo
node_honeypot -->|"starts protection"| node_core
node_honeypot -->|"reads auto-resolve"| node_prefs
node_db -->|"provides DAO"| node_dao
node_repo -->|"calls"| node_dao
node_repo -->|"stores records"| node_threat
node_dashboard -->|"opens logs"| node_logs
node_settings -->|"changes theme"| node_dashboardvm

click node_activity "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/MainActivity.kt"
click node_scaffold "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Navigation/WayPointAdaptiveScaffold.kt"
click node_dashboard "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Dashboard/dashboardScreen.kt"
click node_dashboardvm "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Dashboard/dashboardViewModel.kt"
click node_logs "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Logs/LogSreeen.kt"
click node_logvm "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Logs/LogViewModel.kt"
click node_settings "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Settings/SettingSreeen.kt"
click node_menu "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Menu/MenuScreen.kt"
click node_honeypot "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/service/HoneypotService.kt"
click node_scanner "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/Data/FileScanner.kt"
click node_core "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/service/CoreProtectionService.kt"
click node_prefs "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/Data/UserPreferenceRepository.kt"
click node_db "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/Data/AppDatabase.kt"
click node_repo "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/Data/ThreatRepository.kt"
click node_dao "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/Data/ThreatDao.kt"
click node_threat "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/Data/Threat.kt"
click node_securestore "https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/Data/EncryptedStorage.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_activity,node_scaffold,node_dashboard,node_dashboardvm,node_logs,node_logvm,node_settings,node_menu,node_user toneBlue
class node_honeypot,node_scanner toneAmber
class node_core toneMint
class node_prefs,node_db,node_repo,node_dao,node_threat,node_securestore toneRose
class node_attacker,node_network toneIndigo
```

## Components

### App experience

- [Main activity](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/MainActivity.kt): `app/java+kotlin/com.example.waypointv12/MainActivity.kt`
- [App navigation](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Navigation/WayPointAdaptiveScaffold.kt): `app/java+kotlin/com.example.waypointv12/UI/Navigation/WayPointAdaptiveScaffold.kt`
- [Dashboard](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Dashboard/dashboardScreen.kt): `app/java+kotlin/com.example.waypointv12/UI/Dashboard/dashboardScreen.kt`
- [Dashboard state](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Dashboard/dashboardViewModel.kt): `app/java+kotlin/com.example.waypointv12/UI/Dashboard/dashboardViewModel.kt`
- [Incident log](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Logs/LogSreeen.kt): `app/java+kotlin/com.example.waypointv12/UI/Logs/LogSreeen.kt`
- [Log state](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Logs/LogViewModel.kt): `app/java+kotlin/com.example.waypointv12/UI/Logs/LogViewModel.kt`
- [Settings](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Settings/SettingSreeen.kt): `app/java+kotlin/com.example.waypointv12/UI/Settings/SettingSreeen.kt`
- [Menu](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/UI/Menu/MenuScreen.kt): `app/java+kotlin/com.example.waypointv12/UI/Menu/MenuScreen.kt`

### Threat monitoring

- [Honeypot listener](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/service/HoneypotService.kt): `app/java+kotlin/com.example.waypointv12/service/HoneypotService.kt`
- [File scanner](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/Data/FileScanner.kt): `app/java+kotlin/com.example.waypointv12/Data/FileScanner.kt`

### Protection

- [VPN protection](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/service/CoreProtectionService.kt): `app/java+kotlin/com.example.waypointv12/service/CoreProtectionService.kt`

### State and records

- [User preferences](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/Data/UserPreferenceRepository.kt): `app/java+kotlin/com.example.waypointv12/Data/UserPreferenceRepository.kt`
- [Threat database](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/Data/AppDatabase.kt): `app/java+kotlin/com.example.waypointv12/Data/AppDatabase.kt`
- [Threat repository](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/Data/ThreatRepository.kt): `app/java+kotlin/com.example.waypointv12/Data/ThreatRepository.kt`
- [Threat DAO](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/Data/ThreatDao.kt): `app/java+kotlin/com.example.waypointv12/Data/ThreatDao.kt`
- [Threat record](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/Data/Threat.kt): `app/java+kotlin/com.example.waypointv12/Data/Threat.kt`
- [Encrypted storage](https://github.com/kaagaaz/waypoint/blob/main/app/java%2Bkotlin/com.example.waypointv12/Data/EncryptedStorage.kt): `app/java+kotlin/com.example.waypointv12/Data/EncryptedStorage.kt`

### Other components

- **User**
- **Network host**
- **Android network**

## Connections

- User → Main activity: opens app
- Main activity → App navigation: shows UI
- Main activity → Honeypot listener: starts service
- Main activity → VPN protection: starts service
- App navigation → Dashboard: routes to
- App navigation → Incident log: routes to
- App navigation → Settings: routes to
- App navigation → Menu: routes to
- Dashboard → Dashboard state: requests state
- Dashboard state → File scanner: runs scan
- Honeypot listener → Android network: observes connectivity
- Network host → Honeypot listener: connects to port
- Honeypot listener → Threat repository: inserts threat
- Honeypot listener → VPN protection: starts protection
- Honeypot listener → User preferences: reads auto-resolve
- Threat database → Threat DAO: provides DAO
- Threat repository → Threat DAO: calls
- Threat repository → Threat record: stores records
- Dashboard → Incident log: opens logs
- Settings → Dashboard state: changes theme
