# adarshpatil-07/absolute-cinema architecture

> Architecture diagram of the GitHub repository adarshpatil-07/absolute-cinema, 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/adarshpatil-07/absolute-cinema
- Repository: https://github.com/adarshpatil-07/absolute-cinema

## Overview

Absolute Cinema is a movie-discovery website with a browser frontend and a FastAPI backend that retrieves movie data from TMDB. The evidenced runtime workflow is: a user opens the page, the frontend requests trending movies, the backend fetches and formats results, and the frontend renders them; users can also search and filter the loaded results. The README describes additional recommendation, watchlist, and sharing features, but the sampled frontend source does not show their implementation. The graph preserves those documented capabilities without asserting unverified runtime links.

Main entry points: [`Frontend/script.js`](https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/script.js) (Movie browser), [`backend/main.py`](https://github.com/adarshpatil-07/absolute-cinema/blob/main/backend/main.py) (FastAPI service), [`Frontend/index.html`](https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/index.html) (Page structure), [`Frontend/style.css`](https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/style.css) (Responsive styling)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Browser experience"]
  node_page["Page structure<br/>[index.html]"]
  node_styles["Responsive styling<br/>[style.css]"]
  node_movie_ui["Movie browser<br/>[script.js]"]
  node_search["Movie search<br/>[script.js]"]
  node_genre_filter["Genre filtering<br/>[script.js]"]
  node_recommendations["Mood recommendations<br/>[script.js]"]
  node_surprise["Surprise me<br/>[script.js]"]
  node_watchlist["Watchlist<br/>[script.js]"]
  node_sharing["Copy movie details<br/>[script.js]"]
end

subgraph group_backend["Movie API"]
  node_api["FastAPI service<br/>[main.py]"]
  node_movie_format["Movie formatting<br/>[main.py]"]
  node_config["TMDB configuration<br/>[config.py]"]
end

subgraph group_data["Movie data"]
  node_tmdb["TMDB"]
end

node_user(("Movie seeker"))

node_user -.->|"opens"| node_page
node_page -.->|"hosts"| node_movie_ui
node_styles -.->|"styles"| node_page
node_movie_ui -->|"requests movies"| node_api
node_search -->|"requests search"| node_api
node_api -->|"fetches movie data"| node_tmdb
node_api -->|"reads settings"| node_config
node_api -->|"formats results"| node_movie_format
node_movie_ui -->|"filters loaded movies"| node_genre_filter
node_movie_ui -.->|"offers by mood"| node_recommendations
node_movie_ui -.->|"offers random pick"| node_surprise
node_movie_ui -.->|"saves movies"| node_watchlist
node_movie_ui -.->|"copies details"| node_sharing

click node_page "https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/index.html"
click node_styles "https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/style.css"
click node_movie_ui "https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/script.js"
click node_search "https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/script.js"
click node_genre_filter "https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/script.js"
click node_recommendations "https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/script.js"
click node_surprise "https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/script.js"
click node_watchlist "https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/script.js"
click node_sharing "https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/script.js"
click node_api "https://github.com/adarshpatil-07/absolute-cinema/blob/main/backend/main.py"
click node_movie_format "https://github.com/adarshpatil-07/absolute-cinema/blob/main/backend/main.py"
click node_config "https://github.com/adarshpatil-07/absolute-cinema/blob/main/backend/config.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_page,node_styles,node_movie_ui,node_search,node_genre_filter,node_recommendations,node_surprise,node_watchlist,node_sharing toneBlue
class node_api,node_movie_format,node_config toneAmber
class node_tmdb toneMint
class node_user toneIndigo
```

## Components

### Browser experience

- [Page structure](https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/index.html): `Frontend/index.html`
- [Responsive styling](https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/style.css): `Frontend/style.css`
- [Movie browser](https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/script.js): `Frontend/script.js`
- [Movie search](https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/script.js): `Frontend/script.js`
- [Genre filtering](https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/script.js): `Frontend/script.js`
- [Mood recommendations](https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/script.js): `Frontend/script.js`
- [Surprise me](https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/script.js): `Frontend/script.js`
- [Watchlist](https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/script.js): `Frontend/script.js`
- [Copy movie details](https://github.com/adarshpatil-07/absolute-cinema/blob/main/Frontend/script.js): `Frontend/script.js`

### Movie API

- [FastAPI service](https://github.com/adarshpatil-07/absolute-cinema/blob/main/backend/main.py): `backend/main.py`
- [Movie formatting](https://github.com/adarshpatil-07/absolute-cinema/blob/main/backend/main.py): `backend/main.py`
- [TMDB configuration](https://github.com/adarshpatil-07/absolute-cinema/blob/main/backend/config.py): `backend/config.py`

### Movie data

- **TMDB**

### Other components

- **Movie seeker**

## Connections

- Movie seeker → Page structure: opens (evidence: `README.md`)
- Page structure → Movie browser: hosts (evidence: `README.md`)
- Responsive styling → Page structure: styles (evidence: `README.md`)
- Movie browser → FastAPI service: requests movies (evidence: `Frontend/script.js`)
- Movie search → FastAPI service: requests search (evidence: `Frontend/script.js`)
- FastAPI service → TMDB: fetches movie data (evidence: `backend/main.py`)
- FastAPI service → TMDB configuration: reads settings (evidence: `backend/main.py`)
- FastAPI service → Movie formatting: formats results (evidence: `backend/main.py`)
- Movie browser → Genre filtering: filters loaded movies (evidence: `Frontend/script.js`)
- Movie browser → Mood recommendations: offers by mood (evidence: `README.md`)
- Movie browser → Surprise me: offers random pick (evidence: `README.md`)
- Movie browser → Watchlist: saves movies (evidence: `README.md`)
- Movie browser → Copy movie details: copies details (evidence: `README.md`)
