# ralphbinua/cinevault-movie-explorer architecture

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

- Interactive diagram: https://gitdiagram.com/ralphbinua/cinevault-movie-explorer
- Repository: https://github.com/ralphbinua/cinevault-movie-explorer

## Overview

CineVault is a PyQt6 movie-trailer explorer: a user enters a username, browses and filters a sample catalogue, then plays trailers or maintains in-memory favorites and history. The main loop applies a shared dark theme and opens the dashboard after login; dashboard actions dispatch playback to the embedded player. The README confirms the desktop launch and username-only demo login. The sampled code shows UI-only state and dummy movie data, not persistence or account validation.

Main entry points: [`ui/vault_movie_dashboard.py`](https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/vault_movie_dashboard.py) (Vault dashboard), [`main.py`](https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/main.py) (Application entry), [`ui/movie_player.py`](https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/movie_player.py) (Embedded player), [`ui/login_dialog.py`](https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/login_dialog.py) (Username login)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application flow"]
  node_main["Application entry<br/>[main.py]"]
  node_login["Username login<br/>[login_dialog.py]"]
end

subgraph group_explore["Movie discovery"]
  node_dashboard["Vault dashboard"]
  node_catalog["Sample movie catalogue"]
  node_browse["Search and tabs"]
  node_moviecard["Movie cards<br/>[movie_card.py]"]
  node_favorites["Favorites state"]
  node_history["Watch history"]
end

subgraph group_playback["Trailer playback"]
  node_player["Embedded player<br/>[movie_player.py]"]
  node_trailers["Trailer media<br/>[movie_player.py]"]
  node_media_service["Trailer hosting"]
end

subgraph group_presentation["Shared presentation"]
  node_theme["Dark theme<br/>[styles.py]"]
end

node_user(("User"))

node_user -->|"launches"| node_main
node_main -->|"applies"| node_theme
node_main -->|"opens"| node_login
node_user -->|"enters username"| node_login
node_main -->|"opens after login"| node_dashboard
node_dashboard -->|"filters and displays"| node_catalog
node_dashboard -->|"builds"| node_browse
node_dashboard -->|"renders"| node_moviecard
node_browse -->|"triggers refresh"| node_dashboard
node_dashboard -->|"updates"| node_favorites
node_dashboard -->|"records plays"| node_history
node_dashboard -->|"dispatches movie"| node_player
node_player -->|"selects URL"| node_trailers
node_player -.->|"streams trailer"| node_media_service

click node_main "https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/main.py"
click node_login "https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/login_dialog.py"
click node_dashboard "https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/vault_movie_dashboard.py"
click node_catalog "https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/vault_movie_dashboard.py"
click node_browse "https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/vault_movie_dashboard.py"
click node_moviecard "https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/movie_card.py"
click node_favorites "https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/vault_movie_dashboard.py"
click node_history "https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/vault_movie_dashboard.py"
click node_player "https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/movie_player.py"
click node_trailers "https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/movie_player.py"
click node_theme "https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/styles.py"

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_login,node_user toneBlue
class node_dashboard,node_catalog,node_browse,node_moviecard,node_favorites,node_history toneAmber
class node_player,node_trailers,node_media_service toneMint
class node_theme toneRose
```

## Components

### Application flow

- [Application entry](https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/main.py): `main.py`
- [Username login](https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/login_dialog.py): `ui/login_dialog.py`

### Movie discovery

- [Vault dashboard](https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/vault_movie_dashboard.py): `ui/vault_movie_dashboard.py`
- [Sample movie catalogue](https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/vault_movie_dashboard.py): `ui/vault_movie_dashboard.py`
- [Search and tabs](https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/vault_movie_dashboard.py): `ui/vault_movie_dashboard.py`
- [Movie cards](https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/movie_card.py): `ui/movie_card.py`
- [Favorites state](https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/vault_movie_dashboard.py): `ui/vault_movie_dashboard.py`
- [Watch history](https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/vault_movie_dashboard.py): `ui/vault_movie_dashboard.py`

### Trailer playback

- [Embedded player](https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/movie_player.py): `ui/movie_player.py`
- [Trailer media](https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/movie_player.py): `ui/movie_player.py`
- **Trailer hosting**

### Shared presentation

- [Dark theme](https://github.com/ralphbinua/cinevault-movie-explorer/blob/main/ui/styles.py): `ui/styles.py`

### Other components

- **User**

## Connections

- User → Application entry: launches (evidence: `README.md`)
- Application entry → Dark theme: applies (evidence: `main.py`)
- Application entry → Username login: opens (evidence: `main.py`)
- User → Username login: enters username (evidence: `ui/login_dialog.py`)
- Application entry → Vault dashboard: opens after login (evidence: `main.py`)
- Vault dashboard → Sample movie catalogue: filters and displays (evidence: `ui/vault_movie_dashboard.py`)
- Vault dashboard → Search and tabs: builds (evidence: `ui/vault_movie_dashboard.py`)
- Vault dashboard → Movie cards: renders (evidence: `ui/vault_movie_dashboard.py`)
- Search and tabs → Vault dashboard: triggers refresh (evidence: `ui/vault_movie_dashboard.py`)
- Vault dashboard → Favorites state: updates (evidence: `ui/vault_movie_dashboard.py`)
- Vault dashboard → Watch history: records plays (evidence: `ui/vault_movie_dashboard.py`)
- Vault dashboard → Embedded player: dispatches movie (evidence: `ui/vault_movie_dashboard.py`)
- Embedded player → Trailer media: selects URL (evidence: `ui/movie_player.py`)
- Embedded player → Trailer hosting: streams trailer (evidence: `ui/movie_player.py`)
