# nikunjhadiya/streamflix-django architecture

> Architecture diagram of the GitHub repository nikunjhadiya/streamflix-django, 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/nikunjhadiya/streamflix-django
- Repository: https://github.com/nikunjhadiya/streamflix-django

## Overview

StreamFlix is a Django movie and series browsing and streaming application. Users browse or search the catalog, inspect titles, and can proceed to video playback; signed-in users also manage profiles, watchlists, viewing history, reviews, and notifications. The sampled catalog views explicitly read across several app models and update watch history. Other capabilities are included from the README and file tree, but their internal call wiring was not sampled, so uncertain connections are omitted.

Main entry points: [`streamflix/urls.py`](https://github.com/nikunjhadiya/streamflix-django/blob/main/streamflix/urls.py) (URL routing), [`catlog/views.py`](https://github.com/nikunjhadiya/streamflix-django/blob/main/catlog/views.py) (Catalog views), [`streaming/views.py`](https://github.com/nikunjhadiya/streamflix-django/blob/main/streaming/views.py) (Streaming views), [`notifications/models.py`](https://github.com/nikunjhadiya/streamflix-django/blob/main/notifications/models.py) (Notifications)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web entry"]
  node_router["URL routing<br/>[urls.py]"]
end

subgraph group_identity["Identity"]
  node_auth_routes["Account routes<br/>[urls.py]"]
  node_auth_views["Account and profile<br/>[views.py]"]
  node_profile_data[("Profile data<br/>[models.py]")]
  node_profile_context["Profile context"]
end

subgraph group_catalog["Catalog discovery"]
  node_catalog_routes["Catalog routes<br/>[urls.py]"]
  node_catalog_views["Catalog views<br/>[views.py]"]
  node_catalog_data[("Movies and genres<br/>[models.py]")]
end

subgraph group_viewing["Viewing"]
  node_stream_routes["Streaming routes<br/>[urls.py]"]
  node_stream_views["Streaming views<br/>[views.py]"]
  node_video_data[("Movie videos<br/>[models.py]")]
  node_player["Video player<br/>[player.js]"]
  node_history_data[("Watch history<br/>[models.py]")]
end

subgraph group_engagement["Engagement"]
  node_watchlist_routes["Watchlist routes<br/>[urls.py]"]
  node_watchlist_views["Watchlist views<br/>[views.py]"]
  node_watchlist_data[("Watchlist data<br/>[models.py]")]
  node_review_routes["Review routes<br/>[urls.py]"]
  node_review_views["Review views<br/>[views.py]"]
  node_review_data[("Reviews and ratings<br/>[models.py]")]
  node_notification_routes["Notification routes<br/>[urls.py]"]
  node_notification_views["Notification actions<br/>[views.py]"]
  node_notification_data[("Notifications<br/>[models.py]")]
  node_notification_signals["Automatic notifications<br/>[signals.py]"]
  node_notification_context["Notification badge"]
end

node_viewer(("Viewer"))

node_viewer -->|"sends requests"| node_router
node_router -->|"dispatches"| node_catalog_routes
node_router -->|"dispatches"| node_auth_routes
node_router -->|"dispatches"| node_stream_routes
node_router -->|"dispatches"| node_watchlist_routes
node_router -->|"dispatches"| node_review_routes
node_router -->|"dispatches"| node_notification_routes
node_catalog_routes -->|"routes to"| node_catalog_views
node_auth_routes -->|"routes to"| node_auth_views
node_stream_routes -->|"routes to"| node_stream_views
node_watchlist_routes -->|"routes to"| node_watchlist_views
node_review_routes -->|"routes to"| node_review_views
node_notification_routes -->|"routes to"| node_notification_views
node_catalog_views -->|"queries"| node_catalog_data
node_catalog_views -->|"queries"| node_video_data
node_catalog_views -->|"queries"| node_review_data
node_catalog_views -->|"updates and reads"| node_history_data
node_catalog_views -->|"queries"| node_watchlist_data
node_stream_views -->|"uses video data"| node_video_data
node_player -->|"requests playback"| node_stream_views
node_auth_views -->|"manages profile"| node_profile_data
node_profile_context -->|"gets or creates"| node_profile_data
node_watchlist_views -->|"manages entries"| node_watchlist_data
node_review_views -->|"manages reviews"| node_review_data
node_notification_views -->|"manages notifications"| node_notification_data
node_notification_context -->|"counts unread"| node_notification_data
node_notification_signals -->|"creates notifications"| node_notification_data

click node_router "https://github.com/nikunjhadiya/streamflix-django/blob/main/streamflix/urls.py"
click node_catalog_routes "https://github.com/nikunjhadiya/streamflix-django/blob/main/catlog/urls.py"
click node_catalog_views "https://github.com/nikunjhadiya/streamflix-django/blob/main/catlog/views.py"
click node_catalog_data "https://github.com/nikunjhadiya/streamflix-django/blob/main/catlog/models.py"
click node_auth_routes "https://github.com/nikunjhadiya/streamflix-django/blob/main/auth_user/urls.py"
click node_auth_views "https://github.com/nikunjhadiya/streamflix-django/blob/main/auth_user/views.py"
click node_profile_data "https://github.com/nikunjhadiya/streamflix-django/blob/main/auth_user/models.py"
click node_profile_context "https://github.com/nikunjhadiya/streamflix-django/blob/main/auth_user/context_processors.py"
click node_stream_routes "https://github.com/nikunjhadiya/streamflix-django/blob/main/streaming/urls.py"
click node_stream_views "https://github.com/nikunjhadiya/streamflix-django/blob/main/streaming/views.py"
click node_video_data "https://github.com/nikunjhadiya/streamflix-django/blob/main/streaming/models.py"
click node_player "https://github.com/nikunjhadiya/streamflix-django/blob/main/streaming/static/streaming/js/player.js"
click node_history_data "https://github.com/nikunjhadiya/streamflix-django/blob/main/history/models.py"
click node_watchlist_routes "https://github.com/nikunjhadiya/streamflix-django/blob/main/watchlist/urls.py"
click node_watchlist_views "https://github.com/nikunjhadiya/streamflix-django/blob/main/watchlist/views.py"
click node_watchlist_data "https://github.com/nikunjhadiya/streamflix-django/blob/main/watchlist/models.py"
click node_review_routes "https://github.com/nikunjhadiya/streamflix-django/blob/main/reviews/urls.py"
click node_review_views "https://github.com/nikunjhadiya/streamflix-django/blob/main/reviews/views.py"
click node_review_data "https://github.com/nikunjhadiya/streamflix-django/blob/main/reviews/models.py"
click node_notification_routes "https://github.com/nikunjhadiya/streamflix-django/blob/main/notifications/urls.py"
click node_notification_views "https://github.com/nikunjhadiya/streamflix-django/blob/main/notifications/views.py"
click node_notification_data "https://github.com/nikunjhadiya/streamflix-django/blob/main/notifications/models.py"
click node_notification_signals "https://github.com/nikunjhadiya/streamflix-django/blob/main/notifications/signals.py"
click node_notification_context "https://github.com/nikunjhadiya/streamflix-django/blob/main/notifications/context_processors.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_router,node_viewer toneBlue
class node_auth_routes,node_auth_views,node_profile_data,node_profile_context toneAmber
class node_catalog_routes,node_catalog_views,node_catalog_data toneMint
class node_stream_routes,node_stream_views,node_video_data,node_player,node_history_data toneRose
class node_watchlist_routes,node_watchlist_views,node_watchlist_data,node_review_routes,node_review_views,node_review_data,node_notification_routes,node_notification_views,node_notification_data,node_notification_signals,node_notification_context toneIndigo
```

## Components

### Web entry

- [URL routing](https://github.com/nikunjhadiya/streamflix-django/blob/main/streamflix/urls.py): `streamflix/urls.py`

### Identity

- [Account routes](https://github.com/nikunjhadiya/streamflix-django/blob/main/auth_user/urls.py): `auth_user/urls.py`
- [Account and profile](https://github.com/nikunjhadiya/streamflix-django/blob/main/auth_user/views.py): `auth_user/views.py`
- [Profile data](https://github.com/nikunjhadiya/streamflix-django/blob/main/auth_user/models.py): `auth_user/models.py`
- [Profile context](https://github.com/nikunjhadiya/streamflix-django/blob/main/auth_user/context_processors.py): `auth_user/context_processors.py`

### Catalog discovery

- [Catalog routes](https://github.com/nikunjhadiya/streamflix-django/blob/main/catlog/urls.py): `catlog/urls.py`
- [Catalog views](https://github.com/nikunjhadiya/streamflix-django/blob/main/catlog/views.py): `catlog/views.py`
- [Movies and genres](https://github.com/nikunjhadiya/streamflix-django/blob/main/catlog/models.py): `catlog/models.py`

### Viewing

- [Streaming routes](https://github.com/nikunjhadiya/streamflix-django/blob/main/streaming/urls.py): `streaming/urls.py`
- [Streaming views](https://github.com/nikunjhadiya/streamflix-django/blob/main/streaming/views.py): `streaming/views.py`
- [Movie videos](https://github.com/nikunjhadiya/streamflix-django/blob/main/streaming/models.py): `streaming/models.py`
- [Video player](https://github.com/nikunjhadiya/streamflix-django/blob/main/streaming/static/streaming/js/player.js): `streaming/static/streaming/js/player.js`
- [Watch history](https://github.com/nikunjhadiya/streamflix-django/blob/main/history/models.py): `history/models.py`

### Engagement

- [Watchlist routes](https://github.com/nikunjhadiya/streamflix-django/blob/main/watchlist/urls.py): `watchlist/urls.py`
- [Watchlist views](https://github.com/nikunjhadiya/streamflix-django/blob/main/watchlist/views.py): `watchlist/views.py`
- [Watchlist data](https://github.com/nikunjhadiya/streamflix-django/blob/main/watchlist/models.py): `watchlist/models.py`
- [Review routes](https://github.com/nikunjhadiya/streamflix-django/blob/main/reviews/urls.py): `reviews/urls.py`
- [Review views](https://github.com/nikunjhadiya/streamflix-django/blob/main/reviews/views.py): `reviews/views.py`
- [Reviews and ratings](https://github.com/nikunjhadiya/streamflix-django/blob/main/reviews/models.py): `reviews/models.py`
- [Notification routes](https://github.com/nikunjhadiya/streamflix-django/blob/main/notifications/urls.py): `notifications/urls.py`
- [Notification actions](https://github.com/nikunjhadiya/streamflix-django/blob/main/notifications/views.py): `notifications/views.py`
- [Notifications](https://github.com/nikunjhadiya/streamflix-django/blob/main/notifications/models.py): `notifications/models.py`
- [Automatic notifications](https://github.com/nikunjhadiya/streamflix-django/blob/main/notifications/signals.py): `notifications/signals.py`
- [Notification badge](https://github.com/nikunjhadiya/streamflix-django/blob/main/notifications/context_processors.py): `notifications/context_processors.py`

### Other components

- **Viewer**

## Connections

- Viewer → URL routing: sends requests
- URL routing → Catalog routes: dispatches
- URL routing → Account routes: dispatches
- URL routing → Streaming routes: dispatches
- URL routing → Watchlist routes: dispatches
- URL routing → Review routes: dispatches
- URL routing → Notification routes: dispatches
- Catalog routes → Catalog views: routes to
- Account routes → Account and profile: routes to
- Streaming routes → Streaming views: routes to
- Watchlist routes → Watchlist views: routes to
- Review routes → Review views: routes to
- Notification routes → Notification actions: routes to
- Catalog views → Movies and genres: queries
- Catalog views → Movie videos: queries
- Catalog views → Reviews and ratings: queries
- Catalog views → Watch history: updates and reads
- Catalog views → Watchlist data: queries
- Streaming views → Movie videos: uses video data
- Video player → Streaming views: requests playback
- Account and profile → Profile data: manages profile
- Profile context → Profile data: gets or creates
- Watchlist views → Watchlist data: manages entries
- Review views → Reviews and ratings: manages reviews
- Notification actions → Notifications: manages notifications
- Notification badge → Notifications: counts unread
- Automatic notifications → Notifications: creates notifications
