# fabianvrojas87/appandroidstudioproject architecture

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

- Interactive diagram: https://gitdiagram.com/fabianvrojas87/appandroidstudioproject
- Repository: https://github.com/fabianvrojas87/appandroidstudioproject

## Overview

This is an Android Jetpack Compose app for recording and reviewing rack inspections. The user enters through a splash/login flow, then navigates among rack entry, camera, records/history, and profile screens; rack records are managed through a ViewModel, repository, and Room persistence. The graph preserves the user/profile data and navigation subsystems shown in the tree, though the user ViewModel is commented out in the activity wiring. Several screen implementations were not excerpted, so their internal behavior is not inferred.

Main entry points: [`app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioScaffold.kt`](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioScaffold.kt) (Screen scaffold), [`app/src/main/java/com/duoc/appandroidstudioproject/MainActivity.kt`](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/MainActivity.kt) (Main activity), [`app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioNavegacion.kt`](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioNavegacion.kt) (Navigation host), [`app/src/main/java/com/duoc/appandroidstudioproject/viewmodel/RegistroRackViewModel.kt`](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/viewmodel/RegistroRackViewModel.kt) (Rack view model)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App entry and navigation"]
  node_activity["Main activity<br/>[MainActivity.kt]"]
  node_navigation["Navigation host"]
  node_navflow["Navigation events"]
  node_routes["Screen routes<br/>[Screen.kt]"]
end

subgraph group_ui["Compose screens"]
  node_scaffold["Screen scaffold<br/>[EspacioScaffold.kt]"]
  node_login["Login screen<br/>[LoginScreen.kt]"]
  node_splash["Splash screen<br/>[SplashScreen.kt]"]
  node_start["Start screen<br/>[StartScreen.kt]"]
  node_rackentry["Rack entry<br/>[IngresoScreen.kt]"]
  node_camera["Camera screen<br/>[CamaraScreen.kt]"]
  node_records["Rack records<br/>[RegistrosScreen.kt]"]
  node_history["Record history"]
  node_recordedit["Edit record"]
  node_profile["Profile screen<br/>[PerfilScreen.kt]"]
  node_profileedit["Edit profile<br/>[PerfilEditar.kt]"]
end

subgraph group_rack["Rack records"]
  node_rackvm["Rack view model"]
  node_rackrepo["Rack repository"]
  node_rackdao["Rack DAO<br/>[RegistroRackDao.kt]"]
  node_rackentity["Rack record<br/>[RegistroRack.kt]"]
  node_database[("Room database<br/>[AppDatabase.kt]")]
end

subgraph group_identity["User and profile"]
  node_uservm["User view model"]
  node_userrepo["User repository"]
  node_userdao["User DAO<br/>[UsuarioDao.kt]"]
  node_userentity["User entity<br/>[Usuario.kt]"]
end

node_user(("App user"))

node_user -->|"opens app"| node_activity
node_activity -->|"builds database"| node_database
node_activity -->|"creates repository"| node_rackrepo
node_activity -->|"creates view model"| node_rackvm
node_activity -->|"sets content"| node_navigation
node_navigation -->|"routes to"| node_splash
node_navigation -->|"routes to"| node_login
node_navigation -->|"routes screens"| node_scaffold
node_navigation -->|"collects events"| node_navflow
node_navigation -->|"uses routes"| node_routes
node_scaffold -->|"renders"| node_rackentry
node_scaffold -->|"renders"| node_camera
node_scaffold -->|"renders"| node_records
node_scaffold -->|"renders"| node_history
node_scaffold -->|"renders"| node_recordedit
node_scaffold -->|"renders"| node_profile
node_scaffold -->|"renders"| node_profileedit
node_scaffold -->|"renders"| node_start
node_records -->|"requests navigation"| node_navflow
node_profile -->|"requests navigation"| node_navflow
node_rackentry -.->|"uses view model"| node_rackvm
node_rackvm -->|"calls CRUD"| node_rackrepo
node_rackrepo -->|"calls CRUD"| node_rackdao
node_rackdao -->|"queries entity"| node_rackentity
node_database -->|"exposes DAO"| node_rackdao
node_uservm -->|"calls CRUD"| node_userrepo
node_userrepo -->|"calls CRUD"| node_userdao
node_userdao -->|"queries entity"| node_userentity
node_activity -.->|"wiring disabled"| node_uservm
node_profileedit -.->|"may update user"| node_uservm

click node_activity "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/MainActivity.kt"
click node_navigation "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioNavegacion.kt"
click node_navflow "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/viewmodel/NavigationFlowViewModel.kt"
click node_routes "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/navigation/Screen.kt"
click node_scaffold "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioScaffold.kt"
click node_login "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/LoginScreen.kt"
click node_splash "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/SplashScreen.kt"
click node_start "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/StartScreen.kt"
click node_rackentry "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/IngresoScreen.kt"
click node_camera "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/CamaraScreen.kt"
click node_records "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/RegistrosScreen.kt"
click node_history "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/RegistrosHistorialScreen.kt"
click node_recordedit "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/RegistrosEditarScreen.kt"
click node_profile "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/PerfilScreen.kt"
click node_profileedit "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/PerfilEditar.kt"
click node_rackvm "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/viewmodel/RegistroRackViewModel.kt"
click node_rackrepo "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/repository/RegistroRackRepository.kt"
click node_rackdao "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/model/RegistroRackDao.kt"
click node_rackentity "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/model/RegistroRack.kt"
click node_database "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/model/AppDatabase.kt"
click node_uservm "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/viewmodel/UsuarioViewModel.kt"
click node_userrepo "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/repository/UsuarioRepository.kt"
click node_userdao "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/model/UsuarioDao.kt"
click node_userentity "https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/model/Usuario.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_navigation,node_navflow,node_routes,node_user toneBlue
class node_scaffold,node_login,node_splash,node_start,node_rackentry,node_camera,node_records,node_history,node_recordedit,node_profile,node_profileedit toneAmber
class node_rackvm,node_rackrepo,node_rackdao,node_rackentity,node_database toneMint
class node_uservm,node_userrepo,node_userdao,node_userentity toneRose
```

## Components

### App entry and navigation

- [Main activity](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/MainActivity.kt): `app/src/main/java/com/duoc/appandroidstudioproject/MainActivity.kt`
- [Navigation host](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioNavegacion.kt): `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioNavegacion.kt`
- [Navigation events](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/viewmodel/NavigationFlowViewModel.kt): `app/src/main/java/com/duoc/appandroidstudioproject/viewmodel/NavigationFlowViewModel.kt`
- [Screen routes](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/navigation/Screen.kt): `app/src/main/java/com/duoc/appandroidstudioproject/navigation/Screen.kt`

### Compose screens

- [Screen scaffold](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioScaffold.kt): `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioScaffold.kt`
- [Login screen](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/LoginScreen.kt): `app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/LoginScreen.kt`
- [Splash screen](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/SplashScreen.kt): `app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/SplashScreen.kt`
- [Start screen](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/StartScreen.kt): `app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/StartScreen.kt`
- [Rack entry](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/IngresoScreen.kt): `app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/IngresoScreen.kt`
- [Camera screen](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/CamaraScreen.kt): `app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/CamaraScreen.kt`
- [Rack records](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/RegistrosScreen.kt): `app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/RegistrosScreen.kt`
- [Record history](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/RegistrosHistorialScreen.kt): `app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/RegistrosHistorialScreen.kt`
- [Edit record](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/RegistrosEditarScreen.kt): `app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/RegistrosEditarScreen.kt`
- [Profile screen](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/PerfilScreen.kt): `app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/PerfilScreen.kt`
- [Edit profile](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/PerfilEditar.kt): `app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/PerfilEditar.kt`

### Rack records

- [Rack view model](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/viewmodel/RegistroRackViewModel.kt): `app/src/main/java/com/duoc/appandroidstudioproject/viewmodel/RegistroRackViewModel.kt`
- [Rack repository](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/repository/RegistroRackRepository.kt): `app/src/main/java/com/duoc/appandroidstudioproject/repository/RegistroRackRepository.kt`
- [Rack DAO](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/model/RegistroRackDao.kt): `app/src/main/java/com/duoc/appandroidstudioproject/model/RegistroRackDao.kt`
- [Rack record](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/model/RegistroRack.kt): `app/src/main/java/com/duoc/appandroidstudioproject/model/RegistroRack.kt`
- [Room database](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/model/AppDatabase.kt): `app/src/main/java/com/duoc/appandroidstudioproject/model/AppDatabase.kt`

### User and profile

- [User view model](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/viewmodel/UsuarioViewModel.kt): `app/src/main/java/com/duoc/appandroidstudioproject/viewmodel/UsuarioViewModel.kt`
- [User repository](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/repository/UsuarioRepository.kt): `app/src/main/java/com/duoc/appandroidstudioproject/repository/UsuarioRepository.kt`
- [User DAO](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/model/UsuarioDao.kt): `app/src/main/java/com/duoc/appandroidstudioproject/model/UsuarioDao.kt`
- [User entity](https://github.com/fabianvrojas87/appandroidstudioproject/blob/main/app/src/main/java/com/duoc/appandroidstudioproject/model/Usuario.kt): `app/src/main/java/com/duoc/appandroidstudioproject/model/Usuario.kt`

### Other components

- **App user**

## Connections

- App user → Main activity: opens app
- Main activity → Room database: builds database (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/MainActivity.kt`)
- Main activity → Rack repository: creates repository (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/MainActivity.kt`)
- Main activity → Rack view model: creates view model (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/MainActivity.kt`)
- Main activity → Navigation host: sets content (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/MainActivity.kt`)
- Navigation host → Splash screen: routes to (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioNavegacion.kt`)
- Navigation host → Login screen: routes to (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioNavegacion.kt`)
- Navigation host → Screen scaffold: routes screens (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioNavegacion.kt`)
- Navigation host → Navigation events: collects events (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioNavegacion.kt`)
- Navigation host → Screen routes: uses routes (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioNavegacion.kt`)
- Screen scaffold → Rack entry: renders (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioScaffold.kt`)
- Screen scaffold → Camera screen: renders (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioScaffold.kt`)
- Screen scaffold → Rack records: renders (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioScaffold.kt`)
- Screen scaffold → Record history: renders (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioScaffold.kt`)
- Screen scaffold → Edit record: renders (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioScaffold.kt`)
- Screen scaffold → Profile screen: renders (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioScaffold.kt`)
- Screen scaffold → Edit profile: renders (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioScaffold.kt`)
- Screen scaffold → Start screen: renders (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioScaffold.kt`)
- Rack records → Navigation events: requests navigation (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/layouts/EspacioScaffold.kt`)
- Profile screen → Navigation events: requests navigation (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/PerfilScreen.kt`)
- Rack entry → Rack view model: uses view model (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/ui/screens/IngresoScreen.kt`)
- Rack view model → Rack repository: calls CRUD (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/viewmodel/RegistroRackViewModel.kt`)
- Rack repository → Rack DAO: calls CRUD (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/repository/RegistroRackRepository.kt`)
- Rack DAO → Rack record: queries entity (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/model/RegistroRackDao.kt`)
- Room database → Rack DAO: exposes DAO (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/model/AppDatabase.kt`)
- User view model → User repository: calls CRUD (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/viewmodel/UsuarioViewModel.kt`)
- User repository → User DAO: calls CRUD (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/repository/UsuarioRepository.kt`)
- User DAO → User entity: queries entity (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/model/UsuarioDao.kt`)
- Main activity → User view model: wiring disabled (evidence: `app/src/main/java/com/duoc/appandroidstudioproject/MainActivity.kt`)
- Edit profile → User view model: may update user
