# sheinafathurr1/digital_signage architecture

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

- Interactive diagram: https://gitdiagram.com/sheinafathurr1/digital_signage
- Repository: https://github.com/sheinafathurr1/digital_signage

## Overview

This appears to be a Laravel digital-signage application: administrators manage media content, arrange it into playlists, and assign playlists to displays; display clients load a public display page and retrieve scheduled content, including priority interruptions. The sampled controllers support the content-management and playback flow, while the tree indicates additional display-management, authentication, and profile features. The README is the stock Laravel README, and unsampled routes and views limit certainty about some wiring, especially display assignment and client polling.

Main entry points: [`routes/web.php`](https://github.com/sheinafathurr1/digital_signage/blob/main/routes/web.php) (Web routes), [`app/Http/Controllers/Public/DisplayContentsController.php`](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Public/DisplayContentsController.php) (Scheduled content feed), [`app/Http/Controllers/Admin/ContentController.php`](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Admin/ContentController.php) (Content management), [`app/Http/Controllers/Admin/PlaylistController.php`](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Admin/PlaylistController.php) (Playlist management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_admin["Administration"]
  node_content_admin["Content management"]
  node_display_admin["Display management"]
  node_playlist_admin["Playlist management"]
  node_content_views["Content screens<br/>[index.blade.php]"]
  node_display_views["Display screens<br/>[index.blade.php]"]
  node_playlist_views["Playlist screens<br/>[index.blade.php]"]
  node_content_request["Content validation"]
  node_display_request["Display validation"]
  node_playlist_request["Playlist validation"]
  node_content_model["Content records<br/>[Content.php]"]
  node_playlist_model["Playlist records<br/>[Playlist.php]"]
  node_display_model["Display records<br/>[Display.php]"]
end

subgraph group_playback["Display playback"]
  node_public_page["Display page"]
  node_content_feed["Scheduled content feed"]
  node_public_view["Playback view<br/>[display.blade.php]"]
end

subgraph group_identity["Identity and profile"]
  node_user["User accounts<br/>[User.php]"]
  node_auth_controller["Authentication"]
  node_registration["Registration"]
  node_profile["Profile management"]
  node_login_request["Login validation<br/>[LoginRequest.php]"]
end

subgraph group_runtime["Application runtime"]
  node_web_routes["Web routes<br/>[web.php]"]
  node_api_routes["API routes<br/>[api.php]"]
  node_database[("Application database<br/>[database.php]")]
  node_file_storage[("Public file storage<br/>[filesystems.php]")]
end

node_admin(("Administrator"))
node_display_client(("Display client"))

node_admin -->|"submits requests"| node_web_routes
node_web_routes -->|"dispatches content"| node_content_admin
node_web_routes -->|"dispatches displays"| node_display_admin
node_web_routes -->|"dispatches playlists"| node_playlist_admin
node_content_admin -->|"validates writes"| node_content_request
node_display_admin -->|"validates writes"| node_display_request
node_playlist_admin -->|"validates writes"| node_playlist_request
node_content_admin -->|"reads and writes"| node_content_model
node_display_admin -->|"reads and writes"| node_display_model
node_playlist_admin -->|"reads and writes"| node_playlist_model
node_playlist_admin -->|"lists available content"| node_content_model
node_content_admin -->|"stores and deletes files"| node_file_storage
node_content_admin -->|"renders screens"| node_content_views
node_display_admin -->|"renders screens"| node_display_views
node_playlist_admin -->|"renders screens"| node_playlist_views
node_content_model -->|"persists content"| node_database
node_display_model -->|"persists displays"| node_database
node_playlist_model -->|"persists playlists"| node_database
node_display_client -->|"requests display page"| node_web_routes
node_web_routes -->|"dispatches page"| node_public_page
node_public_page -->|"loads display"| node_display_model
node_public_page -->|"renders display"| node_public_view
node_display_client -->|"requests content feed"| node_api_routes
node_api_routes -->|"dispatches feed"| node_content_feed
node_content_feed -->|"loads display and playlist"| node_display_model
node_content_feed -->|"loads playlist content"| node_playlist_model
node_content_feed -->|"selects scheduled content"| node_content_model
node_content_feed -->|"reads records"| node_database
node_content_feed -->|"returns JSON feed"| node_display_client
node_web_routes -->|"dispatches authentication"| node_auth_controller
node_auth_controller -->|"validates login"| node_login_request
node_registration -->|"creates account"| node_user
node_auth_controller -->|"authenticates account"| node_user
node_profile -->|"updates account"| node_user
node_user -->|"persists account"| node_database
node_web_routes -->|"dispatches registration"| node_registration
node_web_routes -->|"dispatches profile"| node_profile

click node_web_routes "https://github.com/sheinafathurr1/digital_signage/blob/main/routes/web.php"
click node_api_routes "https://github.com/sheinafathurr1/digital_signage/blob/main/routes/api.php"
click node_content_admin "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Admin/ContentController.php"
click node_display_admin "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Admin/DisplayController.php"
click node_playlist_admin "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Admin/PlaylistController.php"
click node_content_views "https://github.com/sheinafathurr1/digital_signage/blob/main/resources/views/admin/contents/index.blade.php"
click node_display_views "https://github.com/sheinafathurr1/digital_signage/blob/main/resources/views/admin/displays/index.blade.php"
click node_playlist_views "https://github.com/sheinafathurr1/digital_signage/blob/main/resources/views/admin/playlists/index.blade.php"
click node_content_request "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Requests/StoreContentRequest.php"
click node_display_request "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Requests/StoreDisplayRequest.php"
click node_playlist_request "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Requests/StorePlaylistRequest.php"
click node_content_model "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Models/Content.php"
click node_playlist_model "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Models/Playlist.php"
click node_display_model "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Models/Display.php"
click node_public_page "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Public/DisplayController.php"
click node_content_feed "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Public/DisplayContentsController.php"
click node_public_view "https://github.com/sheinafathurr1/digital_signage/blob/main/resources/views/public/display.blade.php"
click node_user "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Models/User.php"
click node_auth_controller "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php"
click node_registration "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Auth/RegisteredUserController.php"
click node_profile "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/ProfileController.php"
click node_database "https://github.com/sheinafathurr1/digital_signage/blob/main/config/database.php"
click node_file_storage "https://github.com/sheinafathurr1/digital_signage/blob/main/config/filesystems.php"
click node_login_request "https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Requests/Auth/LoginRequest.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_content_admin,node_display_admin,node_playlist_admin,node_content_views,node_display_views,node_playlist_views,node_content_request,node_display_request,node_playlist_request,node_content_model,node_playlist_model,node_display_model,node_display_client toneBlue
class node_public_page,node_content_feed,node_public_view toneAmber
class node_user,node_auth_controller,node_registration,node_profile,node_login_request toneMint
class node_web_routes,node_api_routes,node_database,node_file_storage toneRose
class node_admin toneIndigo
```

## Components

### Administration

- [Content management](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Admin/ContentController.php): `app/Http/Controllers/Admin/ContentController.php`
- [Display management](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Admin/DisplayController.php): `app/Http/Controllers/Admin/DisplayController.php`
- [Playlist management](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Admin/PlaylistController.php): `app/Http/Controllers/Admin/PlaylistController.php`
- [Content screens](https://github.com/sheinafathurr1/digital_signage/blob/main/resources/views/admin/contents/index.blade.php): `resources/views/admin/contents/index.blade.php`
- [Display screens](https://github.com/sheinafathurr1/digital_signage/blob/main/resources/views/admin/displays/index.blade.php): `resources/views/admin/displays/index.blade.php`
- [Playlist screens](https://github.com/sheinafathurr1/digital_signage/blob/main/resources/views/admin/playlists/index.blade.php): `resources/views/admin/playlists/index.blade.php`
- [Content validation](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Requests/StoreContentRequest.php): `app/Http/Requests/StoreContentRequest.php`
- [Display validation](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Requests/StoreDisplayRequest.php): `app/Http/Requests/StoreDisplayRequest.php`
- [Playlist validation](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Requests/StorePlaylistRequest.php): `app/Http/Requests/StorePlaylistRequest.php`
- [Content records](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Models/Content.php): `app/Models/Content.php`
- [Playlist records](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Models/Playlist.php): `app/Models/Playlist.php`
- [Display records](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Models/Display.php): `app/Models/Display.php`

### Display playback

- [Display page](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Public/DisplayController.php): `app/Http/Controllers/Public/DisplayController.php`
- [Scheduled content feed](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Public/DisplayContentsController.php): `app/Http/Controllers/Public/DisplayContentsController.php`
- [Playback view](https://github.com/sheinafathurr1/digital_signage/blob/main/resources/views/public/display.blade.php): `resources/views/public/display.blade.php`

### Identity and profile

- [User accounts](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Models/User.php): `app/Models/User.php`
- [Authentication](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php): `app/Http/Controllers/Auth/AuthenticatedSessionController.php`
- [Registration](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/Auth/RegisteredUserController.php): `app/Http/Controllers/Auth/RegisteredUserController.php`
- [Profile management](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Controllers/ProfileController.php): `app/Http/Controllers/ProfileController.php`
- [Login validation](https://github.com/sheinafathurr1/digital_signage/blob/main/app/Http/Requests/Auth/LoginRequest.php): `app/Http/Requests/Auth/LoginRequest.php`

### Application runtime

- [Web routes](https://github.com/sheinafathurr1/digital_signage/blob/main/routes/web.php): `routes/web.php`
- [API routes](https://github.com/sheinafathurr1/digital_signage/blob/main/routes/api.php): `routes/api.php`
- [Application database](https://github.com/sheinafathurr1/digital_signage/blob/main/config/database.php): `config/database.php`
- [Public file storage](https://github.com/sheinafathurr1/digital_signage/blob/main/config/filesystems.php): `config/filesystems.php`

### Other components

- **Administrator**
- **Display client**

## Connections

- Administrator → Web routes: submits requests
- Web routes → Content management: dispatches content
- Web routes → Display management: dispatches displays
- Web routes → Playlist management: dispatches playlists
- Content management → Content validation: validates writes
- Display management → Display validation: validates writes
- Playlist management → Playlist validation: validates writes
- Content management → Content records: reads and writes
- Display management → Display records: reads and writes
- Playlist management → Playlist records: reads and writes
- Playlist management → Content records: lists available content
- Content management → Public file storage: stores and deletes files
- Content management → Content screens: renders screens
- Display management → Display screens: renders screens
- Playlist management → Playlist screens: renders screens
- Content records → Application database: persists content
- Display records → Application database: persists displays
- Playlist records → Application database: persists playlists
- Display client → Web routes: requests display page
- Web routes → Display page: dispatches page
- Display page → Display records: loads display
- Display page → Playback view: renders display
- Display client → API routes: requests content feed
- API routes → Scheduled content feed: dispatches feed
- Scheduled content feed → Display records: loads display and playlist
- Scheduled content feed → Playlist records: loads playlist content
- Scheduled content feed → Content records: selects scheduled content
- Scheduled content feed → Application database: reads records
- Scheduled content feed → Display client: returns JSON feed
- Web routes → Authentication: dispatches authentication
- Authentication → Login validation: validates login
- Registration → User accounts: creates account
- Authentication → User accounts: authenticates account
- Profile management → User accounts: updates account
- User accounts → Application database: persists account
- Web routes → Registration: dispatches registration
- Web routes → Profile management: dispatches profile
