# shakibuzzaman52/filmhaat architecture

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

- Interactive diagram: https://gitdiagram.com/shakibuzzaman52/filmhaat
- Repository: https://github.com/shakibuzzaman52/filmhaat

## Overview

Filmhaat is a movie-discovery web application: visitors browse featured and weekly titles, search across configured movie sites, explore categories/latest listings, and save favorites. PHP pages serve the interface and JSON endpoints; browser JavaScript drives loading and interaction, while scraping/API adapters obtain catalog data from external sites. The tree and excerpts support the main search, category, homepage, and admin paths; wiring for several unsampled endpoints is intentionally left unspecified.

Main entry points: [`script.js`](https://github.com/shakibuzzaman52/filmhaat/blob/main/script.js) (Browser interactions), [`config-manager.php`](https://github.com/shakibuzzaman52/filmhaat/blob/main/config-manager.php) (Configuration manager), [`search.php`](https://github.com/shakibuzzaman52/filmhaat/blob/main/search.php) (Search endpoint), [`search-single.php`](https://github.com/shakibuzzaman52/filmhaat/blob/main/search-single.php) (Paged search)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Discovery UI"]
  node_home["Home<br/>[index.php]"]
  node_browser["Browser interactions<br/>[script.js]"]
  node_searchpage["Search results page<br/>[search-results.php]"]
  node_latestpage["Latest listings<br/>[latest.php]"]
  node_categorypage["Category listings<br/>[index.php]"]
  node_morepage["More titles<br/>[more.php]"]
end

subgraph group_catalog["Catalog Services"]
  node_searchapi["Search endpoint<br/>[search.php]"]
  node_singleapi["Paged search<br/>[search-single.php]"]
  node_config["Site configuration<br/>[config.php]"]
  node_hero["Hero carousel data<br/>[hero-carousel.php]"]
  node_weekly["Weekly top ten"]
end

subgraph group_state["User State"]
  node_loved["Saved favorites<br/>[loved.php]"]
  node_weeklydata[("Weekly view counts<br/>[weekly_views.json]")]
end

subgraph group_admin["Administration"]
  node_login["Admin login<br/>[login.php]"]
  node_auth["Session checks<br/>[auth-check.php]"]
  node_manager["Configuration manager<br/>[config-manager.php]"]
  node_configapi["Configuration API<br/>[config-api.php]"]
  node_configactions["Configuration actions<br/>[config-actions.php]"]
end

node_visitor(("Visitor"))
node_externalcatalog["Movie websites and APIs"]
node_admin(("Administrator"))

node_visitor -->|"opens"| node_home
node_home -->|"loads"| node_browser
node_browser -->|"fetches"| node_hero
node_browser -->|"fetches"| node_weekly
node_browser -->|"searches"| node_searchapi
node_visitor -->|"opens results"| node_searchpage
node_searchpage -->|"loads pages"| node_singleapi
node_searchapi -->|"reads sources"| node_config
node_singleapi -->|"reads sources"| node_config
node_searchapi -->|"queries"| node_externalcatalog
node_singleapi -->|"queries"| node_externalcatalog
node_visitor -->|"browses"| node_latestpage
node_visitor -->|"browses"| node_categorypage
node_visitor -->|"browses"| node_morepage
node_categorypage -->|"scrapes listings"| node_externalcatalog
node_weekly -->|"reads or updates"| node_weeklydata
node_visitor -->|"manages favorites"| node_loved
node_admin -->|"authenticates"| node_login
node_manager -->|"checks session"| node_auth
node_admin -->|"configures site"| node_manager
node_manager -->|"submits changes"| node_configapi
node_configapi -->|"dispatches"| node_configactions
node_manager -->|"loads settings"| node_config
node_login -->|"uses session config"| node_auth

click node_home "https://github.com/shakibuzzaman52/filmhaat/blob/main/index.php"
click node_browser "https://github.com/shakibuzzaman52/filmhaat/blob/main/script.js"
click node_searchpage "https://github.com/shakibuzzaman52/filmhaat/blob/main/search-results.php"
click node_latestpage "https://github.com/shakibuzzaman52/filmhaat/blob/main/latest.php"
click node_categorypage "https://github.com/shakibuzzaman52/filmhaat/blob/main/categories/index.php"
click node_morepage "https://github.com/shakibuzzaman52/filmhaat/blob/main/more.php"
click node_searchapi "https://github.com/shakibuzzaman52/filmhaat/blob/main/search.php"
click node_singleapi "https://github.com/shakibuzzaman52/filmhaat/blob/main/search-single.php"
click node_config "https://github.com/shakibuzzaman52/filmhaat/blob/main/config.php"
click node_hero "https://github.com/shakibuzzaman52/filmhaat/blob/main/hero-carousel.php"
click node_weekly "https://github.com/shakibuzzaman52/filmhaat/blob/main/api-weekly-top10.php"
click node_loved "https://github.com/shakibuzzaman52/filmhaat/blob/main/loved.php"
click node_weeklydata "https://github.com/shakibuzzaman52/filmhaat/blob/main/data/weekly_views.json"
click node_login "https://github.com/shakibuzzaman52/filmhaat/blob/main/login.php"
click node_auth "https://github.com/shakibuzzaman52/filmhaat/blob/main/auth-check.php"
click node_manager "https://github.com/shakibuzzaman52/filmhaat/blob/main/config-manager.php"
click node_configapi "https://github.com/shakibuzzaman52/filmhaat/blob/main/config-api.php"
click node_configactions "https://github.com/shakibuzzaman52/filmhaat/blob/main/config-actions.php"

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_home,node_browser,node_searchpage,node_latestpage,node_categorypage,node_morepage toneBlue
class node_searchapi,node_singleapi,node_config,node_hero,node_weekly toneAmber
class node_loved,node_weeklydata,node_externalcatalog toneMint
class node_login,node_auth,node_manager,node_configapi,node_configactions toneRose
class node_visitor,node_admin toneIndigo
```

## Components

### Discovery UI

- [Home](https://github.com/shakibuzzaman52/filmhaat/blob/main/index.php): `index.php`
- [Browser interactions](https://github.com/shakibuzzaman52/filmhaat/blob/main/script.js): `script.js`
- [Search results page](https://github.com/shakibuzzaman52/filmhaat/blob/main/search-results.php): `search-results.php`
- [Latest listings](https://github.com/shakibuzzaman52/filmhaat/blob/main/latest.php): `latest.php`
- [Category listings](https://github.com/shakibuzzaman52/filmhaat/blob/main/categories/index.php): `categories/index.php`
- [More titles](https://github.com/shakibuzzaman52/filmhaat/blob/main/more.php): `more.php`

### Catalog Services

- [Search endpoint](https://github.com/shakibuzzaman52/filmhaat/blob/main/search.php): `search.php`
- [Paged search](https://github.com/shakibuzzaman52/filmhaat/blob/main/search-single.php): `search-single.php`
- [Site configuration](https://github.com/shakibuzzaman52/filmhaat/blob/main/config.php): `config.php`
- [Hero carousel data](https://github.com/shakibuzzaman52/filmhaat/blob/main/hero-carousel.php): `hero-carousel.php`
- [Weekly top ten](https://github.com/shakibuzzaman52/filmhaat/blob/main/api-weekly-top10.php): `api-weekly-top10.php`

### User State

- [Saved favorites](https://github.com/shakibuzzaman52/filmhaat/blob/main/loved.php): `loved.php`
- [Weekly view counts](https://github.com/shakibuzzaman52/filmhaat/blob/main/data/weekly_views.json): `data/weekly_views.json`

### Administration

- [Admin login](https://github.com/shakibuzzaman52/filmhaat/blob/main/login.php): `login.php`
- [Session checks](https://github.com/shakibuzzaman52/filmhaat/blob/main/auth-check.php): `auth-check.php`
- [Configuration manager](https://github.com/shakibuzzaman52/filmhaat/blob/main/config-manager.php): `config-manager.php`
- [Configuration API](https://github.com/shakibuzzaman52/filmhaat/blob/main/config-api.php): `config-api.php`
- [Configuration actions](https://github.com/shakibuzzaman52/filmhaat/blob/main/config-actions.php): `config-actions.php`

### Other components

- **Visitor**
- **Movie websites and APIs**
- **Administrator**

## Connections

- Visitor → Home: opens
- Home → Browser interactions: loads
- Browser interactions → Hero carousel data: fetches
- Browser interactions → Weekly top ten: fetches
- Browser interactions → Search endpoint: searches
- Visitor → Search results page: opens results
- Search results page → Paged search: loads pages
- Search endpoint → Site configuration: reads sources
- Paged search → Site configuration: reads sources
- Search endpoint → Movie websites and APIs: queries
- Paged search → Movie websites and APIs: queries
- Visitor → Latest listings: browses
- Visitor → Category listings: browses
- Visitor → More titles: browses
- Category listings → Movie websites and APIs: scrapes listings
- Weekly top ten → Weekly view counts: reads or updates
- Visitor → Saved favorites: manages favorites
- Administrator → Admin login: authenticates
- Configuration manager → Session checks: checks session
- Administrator → Configuration manager: configures site
- Configuration manager → Configuration API: submits changes
- Configuration API → Configuration actions: dispatches
- Configuration manager → Site configuration: loads settings
- Admin login → Session checks: uses session config
