# umer515k/cinevault architecture

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

- Interactive diagram: https://gitdiagram.com/umer515k/cinevault
- Repository: https://github.com/umer515k/cinevault

## Overview

This is a film-discovery and community frontend: visitors browse or search films, open film details, and—when signed in—rate, review, and manage a watchlist. Separate areas support account registration and preferences, film news, and threaded discussions. Route components make requests through a shared API client; authentication state is shared through an auth context. The README describes only a generic Next.js starter, and source excerpts do not show the API-client implementation or unsampled routes, so those connections are limited to documented calls.

Main entry points: [`src/lib/api.ts`](https://github.com/umer515k/cinevault/blob/main/src/lib/api.ts) (API client), [`src/lib/auth-context.tsx`](https://github.com/umer515k/cinevault/blob/main/src/lib/auth-context.tsx) (Auth context), [`src/components/Toast.tsx`](https://github.com/umer515k/cinevault/blob/main/src/components/Toast.tsx) (Toast feedback), [`src/app/movies/[id]/page.tsx`](https://github.com/umer515k/cinevault/blob/main/src/app/movies/%5Bid%5D/page.tsx) (Film details)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Film discovery"]
  node_home["Home &amp; trends<br/>[page.tsx]"]
  node_catalog["Film catalog<br/>[page.tsx]"]
  node_search["Film search<br/>[page.tsx]"]
  node_film_detail["Film details<br/>[page.tsx]"]
end

subgraph group_accounts["Accounts"]
  node_login["Sign in<br/>[page.tsx]"]
  node_register["Registration<br/>[page.tsx]"]
  node_profile["Profile &amp; genres<br/>[page.tsx]"]
  node_watchlist["Watchlist<br/>[page.tsx]"]
end

subgraph group_community["Community"]
  node_news_list["Film news<br/>[page.tsx]"]
  node_news_detail["News article<br/>[page.tsx]"]
  node_discussion_list["Discussions<br/>[page.tsx]"]
  node_discussion_detail["Discussion thread<br/>[page.tsx]"]
end

subgraph group_shared["Shared services"]
  node_auth["Auth context<br/>[auth-context.tsx]"]
  node_api["API client<br/>[api.ts]"]
  node_movie_card["Movie card<br/>[MovieCard.tsx]"]
  node_rating_ui["Star rating<br/>[StarRating.tsx]"]
  node_toast["Toast feedback<br/>[Toast.tsx]"]
end

node_visitor(("Visitor"))
node_api_service{{"Film service"}}
node_browser_storage[("Browser token storage")]

node_visitor -->|"opens"| node_home
node_visitor -->|"browses"| node_catalog
node_visitor -->|"searches"| node_search
node_visitor -->|"reads"| node_news_list
node_visitor -->|"joins"| node_discussion_list
node_home -->|"requests films"| node_api
node_home -->|"reads user"| node_auth
node_home -->|"renders films"| node_movie_card
node_catalog -->|"requests filtered films"| node_api
node_catalog -->|"renders films"| node_movie_card
node_search -->|"searches films"| node_api
node_search -->|"renders results"| node_movie_card
node_film_detail -->|"loads and updates film"| node_api
node_film_detail -->|"reads user"| node_auth
node_film_detail -->|"shows rating"| node_rating_ui
node_film_detail -->|"reports actions"| node_toast
node_news_list -->|"loads articles"| node_api
node_news_detail -->|"loads article"| node_api
node_discussion_list -->|"loads and creates"| node_api
node_discussion_list -->|"reads user"| node_auth
node_discussion_list -->|"reports creation"| node_toast
node_discussion_detail -->|"loads and replies"| node_api
node_discussion_detail -->|"reads user"| node_auth
node_discussion_detail -->|"reports reply"| node_toast
node_login -->|"signs in"| node_auth
node_register -->|"creates account"| node_auth
node_profile -->|"updates profile"| node_api
node_profile -->|"reads and refreshes user"| node_auth
node_profile -->|"reports save"| node_toast
node_watchlist -->|"loads and edits list"| node_api
node_watchlist -->|"checks sign-in"| node_auth
node_watchlist -->|"reports removal"| node_toast
node_auth -->|"requests account data"| node_api
node_auth -->|"reads and writes token"| node_browser_storage
node_api -->|"sends requests"| node_api_service

click node_home "https://github.com/umer515k/cinevault/blob/main/src/app/page.tsx"
click node_catalog "https://github.com/umer515k/cinevault/blob/main/src/app/movies/page.tsx"
click node_search "https://github.com/umer515k/cinevault/blob/main/src/app/search/page.tsx"
click node_film_detail "https://github.com/umer515k/cinevault/blob/main/src/app/movies/%5Bid%5D/page.tsx"
click node_news_list "https://github.com/umer515k/cinevault/blob/main/src/app/news/page.tsx"
click node_news_detail "https://github.com/umer515k/cinevault/blob/main/src/app/news/%5Bid%5D/page.tsx"
click node_discussion_list "https://github.com/umer515k/cinevault/blob/main/src/app/discussions/page.tsx"
click node_discussion_detail "https://github.com/umer515k/cinevault/blob/main/src/app/discussions/%5Bid%5D/page.tsx"
click node_login "https://github.com/umer515k/cinevault/blob/main/src/app/auth/login/page.tsx"
click node_register "https://github.com/umer515k/cinevault/blob/main/src/app/auth/register/page.tsx"
click node_profile "https://github.com/umer515k/cinevault/blob/main/src/app/profile/page.tsx"
click node_watchlist "https://github.com/umer515k/cinevault/blob/main/src/app/watchlist/page.tsx"
click node_auth "https://github.com/umer515k/cinevault/blob/main/src/lib/auth-context.tsx"
click node_api "https://github.com/umer515k/cinevault/blob/main/src/lib/api.ts"
click node_movie_card "https://github.com/umer515k/cinevault/blob/main/src/components/MovieCard.tsx"
click node_rating_ui "https://github.com/umer515k/cinevault/blob/main/src/components/StarRating.tsx"
click node_toast "https://github.com/umer515k/cinevault/blob/main/src/components/Toast.tsx"

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_catalog,node_search,node_film_detail toneBlue
class node_login,node_register,node_profile,node_watchlist,node_browser_storage toneAmber
class node_news_list,node_news_detail,node_discussion_list,node_discussion_detail toneMint
class node_auth,node_api,node_movie_card,node_rating_ui,node_toast toneRose
class node_visitor,node_api_service toneIndigo
```

## Components

### Film discovery

- [Home & trends](https://github.com/umer515k/cinevault/blob/main/src/app/page.tsx): `src/app/page.tsx`
- [Film catalog](https://github.com/umer515k/cinevault/blob/main/src/app/movies/page.tsx): `src/app/movies/page.tsx`
- [Film search](https://github.com/umer515k/cinevault/blob/main/src/app/search/page.tsx): `src/app/search/page.tsx`
- [Film details](https://github.com/umer515k/cinevault/blob/main/src/app/movies/%5Bid%5D/page.tsx): `src/app/movies/[id]/page.tsx`

### Accounts

- [Sign in](https://github.com/umer515k/cinevault/blob/main/src/app/auth/login/page.tsx): `src/app/auth/login/page.tsx`
- [Registration](https://github.com/umer515k/cinevault/blob/main/src/app/auth/register/page.tsx): `src/app/auth/register/page.tsx`
- [Profile & genres](https://github.com/umer515k/cinevault/blob/main/src/app/profile/page.tsx): `src/app/profile/page.tsx`
- [Watchlist](https://github.com/umer515k/cinevault/blob/main/src/app/watchlist/page.tsx): `src/app/watchlist/page.tsx`

### Community

- [Film news](https://github.com/umer515k/cinevault/blob/main/src/app/news/page.tsx): `src/app/news/page.tsx`
- [News article](https://github.com/umer515k/cinevault/blob/main/src/app/news/%5Bid%5D/page.tsx): `src/app/news/[id]/page.tsx`
- [Discussions](https://github.com/umer515k/cinevault/blob/main/src/app/discussions/page.tsx): `src/app/discussions/page.tsx`
- [Discussion thread](https://github.com/umer515k/cinevault/blob/main/src/app/discussions/%5Bid%5D/page.tsx): `src/app/discussions/[id]/page.tsx`

### Shared services

- [Auth context](https://github.com/umer515k/cinevault/blob/main/src/lib/auth-context.tsx): `src/lib/auth-context.tsx`
- [API client](https://github.com/umer515k/cinevault/blob/main/src/lib/api.ts): `src/lib/api.ts`
- [Movie card](https://github.com/umer515k/cinevault/blob/main/src/components/MovieCard.tsx): `src/components/MovieCard.tsx`
- [Star rating](https://github.com/umer515k/cinevault/blob/main/src/components/StarRating.tsx): `src/components/StarRating.tsx`
- [Toast feedback](https://github.com/umer515k/cinevault/blob/main/src/components/Toast.tsx): `src/components/Toast.tsx`

### Other components

- **Visitor**
- **Film service**
- **Browser token storage**

## Connections

- Visitor → Home & trends: opens
- Visitor → Film catalog: browses
- Visitor → Film search: searches
- Visitor → Film news: reads
- Visitor → Discussions: joins
- Home & trends → API client: requests films
- Home & trends → Auth context: reads user
- Home & trends → Movie card: renders films
- Film catalog → API client: requests filtered films
- Film catalog → Movie card: renders films
- Film search → API client: searches films
- Film search → Movie card: renders results
- Film details → API client: loads and updates film
- Film details → Auth context: reads user
- Film details → Star rating: shows rating
- Film details → Toast feedback: reports actions
- Film news → API client: loads articles
- News article → API client: loads article
- Discussions → API client: loads and creates
- Discussions → Auth context: reads user
- Discussions → Toast feedback: reports creation
- Discussion thread → API client: loads and replies
- Discussion thread → Auth context: reads user
- Discussion thread → Toast feedback: reports reply
- Sign in → Auth context: signs in
- Registration → Auth context: creates account
- Profile & genres → API client: updates profile
- Profile & genres → Auth context: reads and refreshes user
- Profile & genres → Toast feedback: reports save
- Watchlist → API client: loads and edits list
- Watchlist → Auth context: checks sign-in
- Watchlist → Toast feedback: reports removal
- Auth context → API client: requests account data
- Auth context → Browser token storage: reads and writes token
- API client → Film service: sends requests
