# moonjuyoung727/androidapp architecture

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

## Overview

The tree indicates an Android security-camera app: users authenticate, navigate camera and event views, monitor live video, and manage recordings and settings. The runtime also has session, network, media, VPN, and privacy-zone layers. The README is empty and no runtime source was excerpted, so the links below are dashed and unverified; they reflect the product structure suggested by names and directories, not inspected call sites.

Main entry points: [`app/src/main/java/com/example/androidapplication/navigation/AppRoot.kt`](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/navigation/AppRoot.kt) (App navigation), [`app/src/main/java/com/example/androidapplication/feature/settings/SettingsViewModels.kt`](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/settings/SettingsViewModels.kt) (Settings), [`app/src/main/java/com/example/androidapplication/core/data/RemoteRepositories.kt`](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/data/RemoteRepositories.kt) (Data repositories), [`app/src/main/java/com/example/androidapplication/core/webrtc/WebRtcEngine.kt`](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/webrtc/WebRtcEngine.kt) (WebRTC engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App shell"]
  node_activity["Main activity<br/>[MainActivity.kt]"]
  node_root["App navigation<br/>[AppRoot.kt]"]
end

subgraph group_features["Camera features"]
  node_auth["Authentication<br/>[AuthViewModel.kt]"]
  node_dashboard["Dashboard"]
  node_devices["Devices"]
  node_events["Events<br/>[EventsViewModel.kt]"]
  node_monitor["Live monitoring"]
  node_multiview["Multi-camera view"]
  node_settings["Settings"]
end

subgraph group_media["Media and privacy"]
  node_mediaui["Media screens<br/>[MediaViewModels.kt]"]
  node_capture["Capture and recording<br/>[CaptureManager.kt]"]
  node_library["Media library<br/>[MediaLibrary.kt]"]
  node_privacy["Privacy zones"]
end

subgraph group_services["Runtime services"]
  node_session["Session manager<br/>[SessionManager.kt]"]
  node_repositories["Data repositories"]
  node_apis["HTTP APIs<br/>[Apis.kt]"]
  node_webrtc["WebRTC engine<br/>[WebRtcEngine.kt]"]
  node_vpn["VPN control"]
  node_preferences[("Local preferences")]
end

node_user(("User"))
node_server{{"Camera service"}}

node_user -.->|"opens"| node_activity
node_activity -.->|"starts"| node_root
node_root -.->|"routes to"| node_auth
node_root -.->|"routes to"| node_dashboard
node_root -.->|"routes to"| node_devices
node_root -.->|"routes to"| node_events
node_root -.->|"routes to"| node_monitor
node_root -.->|"routes to"| node_multiview
node_root -.->|"routes to"| node_settings
node_auth -.->|"uses"| node_session
node_dashboard -.->|"loads data"| node_repositories
node_devices -.->|"loads data"| node_repositories
node_events -.->|"loads data"| node_repositories
node_repositories -.->|"requests"| node_apis
node_apis -.->|"calls"| node_server
node_monitor -.->|"starts stream"| node_webrtc
node_webrtc -.->|"receives video"| node_server
node_multiview -.->|"uses"| node_webrtc
node_mediaui -.->|"browses"| node_library
node_capture -.->|"stores media"| node_library
node_settings -.->|"manages zones"| node_privacy
node_settings -.->|"updates"| node_preferences
node_settings -.->|"configures"| node_vpn

click node_activity "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/MainActivity.kt"
click node_root "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/navigation/AppRoot.kt"
click node_auth "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/auth/AuthViewModel.kt"
click node_dashboard "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/dashboard/DashboardViewModel.kt"
click node_devices "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/devices/DevicesViewModel.kt"
click node_events "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/events/EventsViewModel.kt"
click node_monitor "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/monitoring/MonitoringViewModel.kt"
click node_multiview "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/multiview/MultiviewViewModel.kt"
click node_settings "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/settings/SettingsViewModels.kt"
click node_mediaui "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/media/MediaViewModels.kt"
click node_capture "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/media/CaptureManager.kt"
click node_library "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/media/MediaLibrary.kt"
click node_privacy "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/data/PrivacyZoneRepositoryImpl.kt"
click node_session "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/session/SessionManager.kt"
click node_repositories "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/data/RemoteRepositories.kt"
click node_apis "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/network/Apis.kt"
click node_webrtc "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/webrtc/WebRtcEngine.kt"
click node_vpn "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/vpn/VpnTunnelController.kt"
click node_preferences "https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/data/LocalPreferences.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_root,node_user toneBlue
class node_auth,node_dashboard,node_devices,node_events,node_monitor,node_multiview,node_settings toneAmber
class node_mediaui,node_capture,node_library,node_privacy toneMint
class node_session,node_repositories,node_apis,node_webrtc,node_vpn,node_preferences toneRose
class node_server toneIndigo
```

## Components

### App shell

- [Main activity](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/MainActivity.kt): `app/src/main/java/com/example/androidapplication/MainActivity.kt`
- [App navigation](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/navigation/AppRoot.kt): `app/src/main/java/com/example/androidapplication/navigation/AppRoot.kt`

### Camera features

- [Authentication](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/auth/AuthViewModel.kt): `app/src/main/java/com/example/androidapplication/feature/auth/AuthViewModel.kt`
- [Dashboard](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/dashboard/DashboardViewModel.kt): `app/src/main/java/com/example/androidapplication/feature/dashboard/DashboardViewModel.kt`
- [Devices](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/devices/DevicesViewModel.kt): `app/src/main/java/com/example/androidapplication/feature/devices/DevicesViewModel.kt`
- [Events](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/events/EventsViewModel.kt): `app/src/main/java/com/example/androidapplication/feature/events/EventsViewModel.kt`
- [Live monitoring](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/monitoring/MonitoringViewModel.kt): `app/src/main/java/com/example/androidapplication/feature/monitoring/MonitoringViewModel.kt`
- [Multi-camera view](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/multiview/MultiviewViewModel.kt): `app/src/main/java/com/example/androidapplication/feature/multiview/MultiviewViewModel.kt`
- [Settings](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/settings/SettingsViewModels.kt): `app/src/main/java/com/example/androidapplication/feature/settings/SettingsViewModels.kt`

### Media and privacy

- [Media screens](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/feature/media/MediaViewModels.kt): `app/src/main/java/com/example/androidapplication/feature/media/MediaViewModels.kt`
- [Capture and recording](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/media/CaptureManager.kt): `app/src/main/java/com/example/androidapplication/core/media/CaptureManager.kt`
- [Media library](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/media/MediaLibrary.kt): `app/src/main/java/com/example/androidapplication/core/media/MediaLibrary.kt`
- [Privacy zones](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/data/PrivacyZoneRepositoryImpl.kt): `app/src/main/java/com/example/androidapplication/core/data/PrivacyZoneRepositoryImpl.kt`

### Runtime services

- [Session manager](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/session/SessionManager.kt): `app/src/main/java/com/example/androidapplication/core/session/SessionManager.kt`
- [Data repositories](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/data/RemoteRepositories.kt): `app/src/main/java/com/example/androidapplication/core/data/RemoteRepositories.kt`
- [HTTP APIs](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/network/Apis.kt): `app/src/main/java/com/example/androidapplication/core/network/Apis.kt`
- [WebRTC engine](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/webrtc/WebRtcEngine.kt): `app/src/main/java/com/example/androidapplication/core/webrtc/WebRtcEngine.kt`
- [VPN control](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/vpn/VpnTunnelController.kt): `app/src/main/java/com/example/androidapplication/core/vpn/VpnTunnelController.kt`
- [Local preferences](https://github.com/moonjuyoung727/androidapp/blob/main/app/src/main/java/com/example/androidapplication/core/data/LocalPreferences.kt): `app/src/main/java/com/example/androidapplication/core/data/LocalPreferences.kt`

### Other components

- **User**
- **Camera service**

## Connections

- User → Main activity: opens
- Main activity → App navigation: starts
- App navigation → Authentication: routes to
- App navigation → Dashboard: routes to
- App navigation → Devices: routes to
- App navigation → Events: routes to
- App navigation → Live monitoring: routes to
- App navigation → Multi-camera view: routes to
- App navigation → Settings: routes to
- Authentication → Session manager: uses
- Dashboard → Data repositories: loads data
- Devices → Data repositories: loads data
- Events → Data repositories: loads data
- Data repositories → HTTP APIs: requests
- HTTP APIs → Camera service: calls
- Live monitoring → WebRTC engine: starts stream
- WebRTC engine → Camera service: receives video
- Multi-camera view → WebRTC engine: uses
- Media screens → Media library: browses
- Capture and recording → Media library: stores media
- Settings → Privacy zones: manages zones
- Settings → Local preferences: updates
- Settings → VPN control: configures
