# rkchoudhury/movie-hub architecture

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

## Overview

Movie Hub is an Android app for browsing and searching movies. Its principal user-facing flow is opening the app and reaching movie-browsing or search surfaces; the tree also shows profile selection, viewing all movies, and movie details. The source excerpts do not include app or screen implementations, so the graph identifies these surfaces and state/data layers without asserting unverified calls, navigation links, or external services.

Main entry points: [`app/src/main/java/com/example/moviehub/MainActivity.kt`](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/MainActivity.kt) (Main activity)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App entry and navigation"]
  node_main["Main activity<br/>[MainActivity.kt]"]
  node_appnav["App navigation<br/>[AppNavigation.kt]"]
  node_dashboardnav["Dashboard navigation"]
end

subgraph group_surfaces["Movie and profile screens"]
  node_home["Home screen<br/>[HomeScreen.kt]"]
  node_search["Search screen<br/>[SearchScreen.kt]"]
  node_profiles["Profile selection"]
  node_viewall["View all movies"]
  node_details["Movie details"]
end

subgraph group_runtime["Movie state and data"]
  node_movievm["Movie view model<br/>[MovieViewModel.kt]"]
  node_collectionvm["Collection view model"]
  node_morevm["More movies view model"]
  node_detailsvm["Details view model"]
  node_service["Movie service<br/>[movie_service.kt]"]
  node_movie["Movie model<br/>[Movie.kt]"]
  node_detailsmodel["Movie details model<br/>[MovieDetails.kt]"]
  node_state["Movie state<br/>[MovieState.kt]"]
  node_detailsstate["Details state"]
end

node_user(("App user"))

node_user -->|"opens app"| node_main

click node_main "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/MainActivity.kt"
click node_appnav "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/navigation/AppNavigation.kt"
click node_dashboardnav "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/screens/dashboard/DashboardNavigator.kt"
click node_home "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/screens/dashboard/HomeScreen.kt"
click node_search "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/screens/dashboard/SearchScreen.kt"
click node_profiles "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/screens/profile_selection/ProfileSelectionScreen.kt"
click node_viewall "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/screens/view_all/ViewAllMovieScreen.kt"
click node_details "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/screens/movie_details/MovieDetailsScreen.kt"
click node_movievm "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/viewmodels/MovieViewModel.kt"
click node_collectionvm "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/viewmodels/MovieCollectionViewModel.kt"
click node_morevm "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/viewmodels/MoreMovieViewModel.kt"
click node_detailsvm "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/viewmodels/MovieDetailsViewModel.kt"
click node_service "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/services/movie_service.kt"
click node_movie "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/models/Movie.kt"
click node_detailsmodel "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/models/MovieDetails.kt"
click node_state "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/models/MovieState.kt"
click node_detailsstate "https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/models/MovieDetailsState.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_main,node_appnav,node_dashboardnav,node_user toneBlue
class node_home,node_search,node_profiles,node_viewall,node_details toneAmber
class node_movievm,node_collectionvm,node_morevm,node_detailsvm,node_service,node_movie,node_detailsmodel,node_state,node_detailsstate toneMint
```

## Components

### App entry and navigation

- [Main activity](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/MainActivity.kt): `app/src/main/java/com/example/moviehub/MainActivity.kt`
- [App navigation](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/navigation/AppNavigation.kt): `app/src/main/java/com/example/moviehub/navigation/AppNavigation.kt`
- [Dashboard navigation](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/screens/dashboard/DashboardNavigator.kt): `app/src/main/java/com/example/moviehub/screens/dashboard/DashboardNavigator.kt`

### Movie and profile screens

- [Home screen](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/screens/dashboard/HomeScreen.kt): `app/src/main/java/com/example/moviehub/screens/dashboard/HomeScreen.kt`
- [Search screen](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/screens/dashboard/SearchScreen.kt): `app/src/main/java/com/example/moviehub/screens/dashboard/SearchScreen.kt`
- [Profile selection](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/screens/profile_selection/ProfileSelectionScreen.kt): `app/src/main/java/com/example/moviehub/screens/profile_selection/ProfileSelectionScreen.kt`
- [View all movies](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/screens/view_all/ViewAllMovieScreen.kt): `app/src/main/java/com/example/moviehub/screens/view_all/ViewAllMovieScreen.kt`
- [Movie details](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/screens/movie_details/MovieDetailsScreen.kt): `app/src/main/java/com/example/moviehub/screens/movie_details/MovieDetailsScreen.kt`

### Movie state and data

- [Movie view model](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/viewmodels/MovieViewModel.kt): `app/src/main/java/com/example/moviehub/viewmodels/MovieViewModel.kt`
- [Collection view model](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/viewmodels/MovieCollectionViewModel.kt): `app/src/main/java/com/example/moviehub/viewmodels/MovieCollectionViewModel.kt`
- [More movies view model](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/viewmodels/MoreMovieViewModel.kt): `app/src/main/java/com/example/moviehub/viewmodels/MoreMovieViewModel.kt`
- [Details view model](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/viewmodels/MovieDetailsViewModel.kt): `app/src/main/java/com/example/moviehub/viewmodels/MovieDetailsViewModel.kt`
- [Movie service](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/services/movie_service.kt): `app/src/main/java/com/example/moviehub/services/movie_service.kt`
- [Movie model](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/models/Movie.kt): `app/src/main/java/com/example/moviehub/models/Movie.kt`
- [Movie details model](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/models/MovieDetails.kt): `app/src/main/java/com/example/moviehub/models/MovieDetails.kt`
- [Movie state](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/models/MovieState.kt): `app/src/main/java/com/example/moviehub/models/MovieState.kt`
- [Details state](https://github.com/rkchoudhury/movie-hub/blob/main/app/src/main/java/com/example/moviehub/models/MovieDetailsState.kt): `app/src/main/java/com/example/moviehub/models/MovieDetailsState.kt`

### Other components

- **App user**

## Connections

- App user → Main activity: opens app
