# velzanava/lumine-app architecture

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

- Interactive diagram: https://gitdiagram.com/velzanava/lumine-app
- Repository: https://github.com/velzanava/lumine-app

## Overview

Lumine is an Android jewelry-shopping app whose central journey is account access, catalog browsing, product selection, and live AR try-on, followed by an optional rating. The graph also preserves profile/favorites and admin management capabilities documented in the README and API service. AR wiring is based on the README and partial ARScreen excerpt; unsampled viewmodels and screens are represented by their exact tree paths, so uncertain call links are omitted.

Main entry points: [`app/src/main/java/com/thesis/lumine/MainActivity.kt`](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/MainActivity.kt) (Navigation host), [`app/src/main/java/com/thesis/lumine/ui/ar/ARScreen.kt`](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/ui/ar/ARScreen.kt) (AR experience), [`app/src/main/java/com/thesis/lumine/data/repository/JewelryRepository.kt`](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/data/repository/JewelryRepository.kt) (Jewelry repository), [`app/src/main/java/com/thesis/lumine/ui/catalog`](https://github.com/velzanava/lumine-app/tree/main/app/src/main/java/com/thesis/lumine/ui/catalog) (Catalog screens)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_journey["Shopping Journey"]
  node_activity["Navigation host<br/>[MainActivity.kt]"]
  node_catalogui["Catalog screens"]
  node_jewelryvm["Jewelry state"]
end

subgraph group_ar["AR Try-On"]
  node_arscreen["AR experience<br/>[ARScreen.kt]"]
  node_camera["Camera frames<br/>[CameraManager.kt]"]
  node_mp["Landmark tracking<br/>[MediaPipeHelper.kt]"]
  node_overlay["2D overlay<br/>[AROverlayView.kt]"]
  node_bridge["Unity bridge<br/>[UnityBridge.kt]"]
  node_unity["Unity renderer"]
end

subgraph group_account["Account &amp; Profile"]
  node_authui["Auth screens"]
  node_authvm["Auth state<br/>[AuthViewModel.kt]"]
  node_profileui["Profile screens"]
  node_profilevm["Profile state"]
  node_session[("Secure session<br/>[SessionManager.kt]")]
end

subgraph group_operations["Admin &amp; Evaluation"]
  node_evalvm["Evaluation state"]
  node_adminui["Admin panel<br/>[AdminScreen.kt]"]
end

subgraph group_backend["Backend Access"]
  node_jewelry["Jewelry repository"]
  node_api["REST API service"]
  node_retrofit["HTTP client<br/>[RetrofitClient.kt]"]
end

node_user(("App user"))
node_server["Lumine backend"]
node_storage[("Backend data services")]

node_user -->|"opens and navigates"| node_activity
node_activity -->|"routes"| node_authui
node_authui -->|"submits credentials"| node_authvm
node_authvm -->|"requests auth"| node_jewelry
node_authvm -->|"persists session"| node_session
node_activity -->|"routes"| node_catalogui
node_catalogui -->|"browses items"| node_jewelryvm
node_jewelryvm -->|"loads catalog"| node_jewelry
node_catalogui -->|"selects product"| node_activity
node_activity -->|"opens selected item"| node_arscreen
node_arscreen -->|"starts camera"| node_camera
node_camera -->|"passes frames"| node_mp
node_arscreen -->|"configures tracking"| node_mp
node_arscreen -->|"updates indicators"| node_overlay
node_arscreen -->|"sends landmarks"| node_bridge
node_bridge -->|"dispatches coordinates"| node_unity
node_arscreen -->|"submits rating"| node_evalvm
node_evalvm -->|"sends evaluation"| node_jewelry
node_activity -->|"routes"| node_profileui
node_profileui -->|"edits profile"| node_profilevm
node_profilevm -->|"loads profile and favorites"| node_jewelry
node_activity -->|"routes admin"| node_adminui
node_adminui -->|"manages catalog"| node_jewelryvm
node_adminui -->|"views ratings"| node_evalvm
node_jewelry -->|"calls endpoints"| node_api
node_api -->|"uses client"| node_retrofit
node_retrofit -->|"sends HTTP"| node_server
node_server -.->|"reads and writes"| node_storage

click node_activity "https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/MainActivity.kt"
click node_authui "https://github.com/velzanava/lumine-app/tree/main/app/src/main/java/com/thesis/lumine/ui/auth"
click node_authvm "https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/viewmodel/AuthViewModel.kt"
click node_catalogui "https://github.com/velzanava/lumine-app/tree/main/app/src/main/java/com/thesis/lumine/ui/catalog"
click node_jewelryvm "https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/viewmodel/JewelryViewModel.kt"
click node_jewelry "https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/data/repository/JewelryRepository.kt"
click node_profileui "https://github.com/velzanava/lumine-app/tree/main/app/src/main/java/com/thesis/lumine/ui/profile"
click node_profilevm "https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/viewmodel/ProfileViewModel.kt"
click node_session "https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/utils/SessionManager.kt"
click node_arscreen "https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/ui/ar/ARScreen.kt"
click node_camera "https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/utils/CameraManager.kt"
click node_mp "https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/utils/MediaPipeHelper.kt"
click node_overlay "https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/utils/AROverlayView.kt"
click node_bridge "https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/utils/UnityBridge.kt"
click node_evalvm "https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/viewmodel/EvaluationViewModel.kt"
click node_adminui "https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/ui/admin/AdminScreen.kt"
click node_api "https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/data/api/LumineApiService.kt"
click node_retrofit "https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/data/api/RetrofitClient.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_catalogui,node_jewelryvm,node_user toneBlue
class node_arscreen,node_camera,node_mp,node_overlay,node_bridge,node_unity,node_storage toneAmber
class node_authui,node_authvm,node_profileui,node_profilevm,node_session toneMint
class node_evalvm,node_adminui toneRose
class node_jewelry,node_api,node_retrofit,node_server toneIndigo
```

## Components

### Shopping Journey

- [Navigation host](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/MainActivity.kt): `app/src/main/java/com/thesis/lumine/MainActivity.kt`
- [Catalog screens](https://github.com/velzanava/lumine-app/tree/main/app/src/main/java/com/thesis/lumine/ui/catalog): `app/src/main/java/com/thesis/lumine/ui/catalog`
- [Jewelry state](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/viewmodel/JewelryViewModel.kt): `app/src/main/java/com/thesis/lumine/viewmodel/JewelryViewModel.kt`

### AR Try-On

- [AR experience](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/ui/ar/ARScreen.kt): `app/src/main/java/com/thesis/lumine/ui/ar/ARScreen.kt`
- [Camera frames](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/utils/CameraManager.kt): `app/src/main/java/com/thesis/lumine/utils/CameraManager.kt`
- [Landmark tracking](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/utils/MediaPipeHelper.kt): `app/src/main/java/com/thesis/lumine/utils/MediaPipeHelper.kt`
- [2D overlay](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/utils/AROverlayView.kt): `app/src/main/java/com/thesis/lumine/utils/AROverlayView.kt`
- [Unity bridge](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/utils/UnityBridge.kt): `app/src/main/java/com/thesis/lumine/utils/UnityBridge.kt`
- **Unity renderer**

### Account & Profile

- [Auth screens](https://github.com/velzanava/lumine-app/tree/main/app/src/main/java/com/thesis/lumine/ui/auth): `app/src/main/java/com/thesis/lumine/ui/auth`
- [Auth state](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/viewmodel/AuthViewModel.kt): `app/src/main/java/com/thesis/lumine/viewmodel/AuthViewModel.kt`
- [Profile screens](https://github.com/velzanava/lumine-app/tree/main/app/src/main/java/com/thesis/lumine/ui/profile): `app/src/main/java/com/thesis/lumine/ui/profile`
- [Profile state](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/viewmodel/ProfileViewModel.kt): `app/src/main/java/com/thesis/lumine/viewmodel/ProfileViewModel.kt`
- [Secure session](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/utils/SessionManager.kt): `app/src/main/java/com/thesis/lumine/utils/SessionManager.kt`

### Admin & Evaluation

- [Evaluation state](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/viewmodel/EvaluationViewModel.kt): `app/src/main/java/com/thesis/lumine/viewmodel/EvaluationViewModel.kt`
- [Admin panel](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/ui/admin/AdminScreen.kt): `app/src/main/java/com/thesis/lumine/ui/admin/AdminScreen.kt`

### Backend Access

- [Jewelry repository](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/data/repository/JewelryRepository.kt): `app/src/main/java/com/thesis/lumine/data/repository/JewelryRepository.kt`
- [REST API service](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/data/api/LumineApiService.kt): `app/src/main/java/com/thesis/lumine/data/api/LumineApiService.kt`
- [HTTP client](https://github.com/velzanava/lumine-app/blob/main/app/src/main/java/com/thesis/lumine/data/api/RetrofitClient.kt): `app/src/main/java/com/thesis/lumine/data/api/RetrofitClient.kt`

### Other components

- **App user**
- **Lumine backend**
- **Backend data services**

## Connections

- App user → Navigation host: opens and navigates
- Navigation host → Auth screens: routes
- Auth screens → Auth state: submits credentials
- Auth state → Jewelry repository: requests auth
- Auth state → Secure session: persists session
- Navigation host → Catalog screens: routes
- Catalog screens → Jewelry state: browses items
- Jewelry state → Jewelry repository: loads catalog
- Catalog screens → Navigation host: selects product
- Navigation host → AR experience: opens selected item
- AR experience → Camera frames: starts camera
- Camera frames → Landmark tracking: passes frames
- AR experience → Landmark tracking: configures tracking
- AR experience → 2D overlay: updates indicators
- AR experience → Unity bridge: sends landmarks
- Unity bridge → Unity renderer: dispatches coordinates
- AR experience → Evaluation state: submits rating
- Evaluation state → Jewelry repository: sends evaluation
- Navigation host → Profile screens: routes
- Profile screens → Profile state: edits profile
- Profile state → Jewelry repository: loads profile and favorites
- Navigation host → Admin panel: routes admin
- Admin panel → Jewelry state: manages catalog
- Admin panel → Evaluation state: views ratings
- Jewelry repository → REST API service: calls endpoints
- REST API service → HTTP client: uses client
- HTTP client → Lumine backend: sends HTTP
- Lumine backend → Backend data services: reads and writes
