# thedrizzyway/movie-cloud architecture

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

## Overview

Movie-Cloud is an Angular movie and TV discovery app backed by The Movie Database (TMDB). Its user-facing capabilities include browsing and filtering titles, searching, viewing item and people details, and managing login, favorites, and ratings. The source confirms separate services for catalog data, discovery, authentication, and account actions, plus a resolver layer for item details. The README provides no further architecture detail, and component-to-service wiring is not shown in the sampled source, so those links are omitted.

Main entry points: [`moviecloud/src/app/services/auth/auth.service.ts`](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/auth/auth.service.ts) (Authentication service), [`moviecloud/src/app/services/genres/genre.service.ts`](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/genres/genre.service.ts) (Genre services), [`moviecloud/src/app/services/discover/discover.service.ts`](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/discover/discover.service.ts) (Discovery service), [`moviecloud/src/app/services/generic/generic.service.ts`](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/generic/generic.service.ts) (HTTP resource layer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_home["Home browsing<br/>[home.component.ts]"]
  node_discover["Discover filters"]
  node_search["Search results"]
  node_item["Item details"]
  node_people["People browsing"]
  node_profile["User profile"]
  node_login["User login"]
end

subgraph group_catalog["Catalog data"]
  node_movieapi["Catalog services<br/>[movie.service.ts]"]
  node_discoverapi["Discovery service"]
  node_generic["HTTP resource layer<br/>[generic.service.ts]"]
  node_genres["Genre services<br/>[genre.service.ts]"]
end

subgraph group_identity["Account"]
  node_auth["Authentication service<br/>[auth.service.ts]"]
  node_account["Account service<br/>[account.service.ts]"]
end

subgraph group_coordination["App coordination"]
  node_routing["App routing"]
  node_resolvers["Item resolvers"]
  node_global["Genre coordination<br/>[global.service.ts]"]
end

node_viewer(("Viewer"))
node_tmdb["TMDB API"]
node_storage[("Browser storage")]

node_viewer -->|"opens"| node_routing
node_global -->|"fetches genres"| node_genres
node_genres -->|"requests genres"| node_tmdb
node_discoverapi -->|"searches and discovers"| node_tmdb
node_generic -->|"requests resources"| node_tmdb
node_auth -->|"authenticates"| node_tmdb
node_auth -->|"reads and writes"| node_storage
node_account -->|"reads and updates"| node_tmdb
node_resolvers -->|"resolves item data"| node_movieapi

click node_routing "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/app-routing.module.ts"
click node_home "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/components/home/home.component.ts"
click node_discover "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/components/discover/discover.component.ts"
click node_search "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/components/search-results/search-results.component.ts"
click node_item "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/components/item-details/item-details.component.ts"
click node_people "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/components/people-carousel/people-carousel.component.ts"
click node_profile "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/components/user-profile/user-profile.component.ts"
click node_login "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/components/user-login/user-login.component.ts"
click node_movieapi "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/movies/movie.service.ts"
click node_discoverapi "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/discover/discover.service.ts"
click node_generic "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/generic/generic.service.ts"
click node_resolvers "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/resolvers/item-resolver.service.ts"
click node_global "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/global/global.service.ts"
click node_genres "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/genres/genre.service.ts"
click node_auth "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/auth/auth.service.ts"
click node_account "https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/account/account.service.ts"

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_discover,node_search,node_item,node_people,node_profile,node_login,node_viewer toneBlue
class node_movieapi,node_discoverapi,node_generic,node_genres,node_storage toneAmber
class node_auth,node_account,node_tmdb toneMint
class node_routing,node_resolvers,node_global toneRose
```

## Components

### User experience

- [Home browsing](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/components/home/home.component.ts): `moviecloud/src/app/components/home/home.component.ts`
- [Discover filters](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/components/discover/discover.component.ts): `moviecloud/src/app/components/discover/discover.component.ts`
- [Search results](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/components/search-results/search-results.component.ts): `moviecloud/src/app/components/search-results/search-results.component.ts`
- [Item details](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/components/item-details/item-details.component.ts): `moviecloud/src/app/components/item-details/item-details.component.ts`
- [People browsing](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/components/people-carousel/people-carousel.component.ts): `moviecloud/src/app/components/people-carousel/people-carousel.component.ts`
- [User profile](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/components/user-profile/user-profile.component.ts): `moviecloud/src/app/components/user-profile/user-profile.component.ts`
- [User login](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/components/user-login/user-login.component.ts): `moviecloud/src/app/components/user-login/user-login.component.ts`

### Catalog data

- [Catalog services](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/movies/movie.service.ts): `moviecloud/src/app/services/movies/movie.service.ts`
- [Discovery service](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/discover/discover.service.ts): `moviecloud/src/app/services/discover/discover.service.ts`
- [HTTP resource layer](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/generic/generic.service.ts): `moviecloud/src/app/services/generic/generic.service.ts`
- [Genre services](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/genres/genre.service.ts): `moviecloud/src/app/services/genres/genre.service.ts`

### Account

- [Authentication service](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/auth/auth.service.ts): `moviecloud/src/app/services/auth/auth.service.ts`
- [Account service](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/account/account.service.ts): `moviecloud/src/app/services/account/account.service.ts`

### App coordination

- [App routing](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/app-routing.module.ts): `moviecloud/src/app/app-routing.module.ts`
- [Item resolvers](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/resolvers/item-resolver.service.ts): `moviecloud/src/app/resolvers/item-resolver.service.ts`
- [Genre coordination](https://github.com/thedrizzyway/movie-cloud/blob/master/moviecloud/src/app/services/global/global.service.ts): `moviecloud/src/app/services/global/global.service.ts`

### Other components

- **Viewer**
- **TMDB API**
- **Browser storage**

## Connections

- Viewer → App routing: opens
- Genre coordination → Genre services: fetches genres
- Genre services → TMDB API: requests genres
- Discovery service → TMDB API: searches and discovers
- HTTP resource layer → TMDB API: requests resources
- Authentication service → TMDB API: authenticates
- Authentication service → Browser storage: reads and writes
- Account service → TMDB API: reads and updates
- Item resolvers → Catalog services: resolves item data
