# reyvanno/sistemantrianbank architecture

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

## Overview

This Laravel application manages service-counter queues: customers choose a service and receive a ticket; staff call and process waiting tickets; a public monitor displays counter availability and queue status. Admin screens cover queue operations, counters, services, users, roles, permissions, and dashboard reporting. The sampled code supports the customer, queue-operation, monitor, authentication-presence, and ticket-PDF connections; several admin subsystems are represented by their tree paths, but their internal wiring was not sampled. The README describes Laravel itself, not this application's domain.

Main entry points: [`app/Services/QueueService.php`](https://github.com/reyvanno/sistemantrianbank/blob/main/app/Services/QueueService.php) (Queue Lifecycle), [`app/Http/Controllers/Customer/QueueController.php`](https://github.com/reyvanno/sistemantrianbank/blob/main/app/Http/Controllers/Customer/QueueController.php) (Customer Queue), [`app/Http/Controllers/MonitorController.php`](https://github.com/reyvanno/sistemantrianbank/blob/main/app/Http/Controllers/MonitorController.php) (Monitor Data), [`app/Models/Queue.php`](https://github.com/reyvanno/sistemantrianbank/blob/main/app/Models/Queue.php) (Queue Records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User Interfaces"]
  node_customer_queue["Queue Request UI<br/>[Index.vue]"]
  node_admin_queue_ui["Queue Operations UI<br/>[Index.vue]"]
  node_monitor_ui["Public Monitor UI<br/>[Monitor.vue]"]
end

subgraph group_queue["Queue Operations"]
  node_customer_controller["Customer Queue"]
  node_admin_queue_controller["Admin Queue"]
  node_queue_service["Queue Lifecycle<br/>[QueueService.php]"]
  node_monitor_controller["Monitor Data"]
  node_ticket_pdf["Queue Ticket PDF"]
end

subgraph group_admin["Administration"]
  node_service_catalog["Service Catalog<br/>[ServiceService.php]"]
  node_admin_management["Admin Management"]
  node_dashboard["Dashboard Reporting"]
  node_auth_controller["Session Authentication"]
end

subgraph group_state["Application State"]
  node_queue_records[("Queue Records<br/>[Queue.php]")]
  node_queue_logs[("Queue Logs<br/>[QueueLog.php]")]
  node_counter_records[("Counter Records<br/>[Counter.php]")]
  node_service_records[("Service Records<br/>[Service.php]")]
  node_presence_store[("Redis Presence")]
end

node_customer(("Customer"))
node_staff(("Staff"))
node_administrator(("Administrator"))

node_customer -->|"requests ticket"| node_customer_queue
node_customer_queue -->|"submits request"| node_customer_controller
node_customer_controller -->|"creates queue"| node_queue_service
node_customer_controller -->|"loads services"| node_service_catalog
node_customer_controller -->|"loads ticket"| node_queue_records
node_customer_controller -->|"renders ticket"| node_ticket_pdf
node_staff -->|"operates queue"| node_admin_queue_ui
node_admin_queue_ui -->|"sends actions"| node_admin_queue_controller
node_admin_queue_controller -->|"dispatches lifecycle"| node_queue_service
node_admin_queue_controller -->|"loads queue data"| node_queue_records
node_queue_service -->|"creates and updates"| node_queue_records
node_queue_service -->|"records actions"| node_queue_logs
node_queue_service -->|"checks counter"| node_counter_records
node_queue_service -->|"checks service"| node_service_records
node_monitor_ui -->|"polls status"| node_monitor_controller
node_monitor_controller -->|"reads queue state"| node_queue_records
node_monitor_controller -->|"reads counters"| node_counter_records
node_monitor_controller -->|"checks presence"| node_presence_store
node_administrator -->|"manages system"| node_admin_management
node_administrator -->|"views reporting"| node_dashboard
node_admin_management -->|"manages services"| node_service_catalog
node_auth_controller -->|"sets and clears presence"| node_presence_store

click node_customer_queue "https://github.com/reyvanno/sistemantrianbank/blob/main/resources/js/Pages/Customer/Queue/Index.vue"
click node_admin_queue_ui "https://github.com/reyvanno/sistemantrianbank/blob/main/resources/js/Pages/Admin/Queues/Index.vue"
click node_monitor_ui "https://github.com/reyvanno/sistemantrianbank/blob/main/resources/js/Pages/Monitor.vue"
click node_customer_controller "https://github.com/reyvanno/sistemantrianbank/blob/main/app/Http/Controllers/Customer/QueueController.php"
click node_admin_queue_controller "https://github.com/reyvanno/sistemantrianbank/blob/main/app/Http/Controllers/Admin/QueueController.php"
click node_queue_service "https://github.com/reyvanno/sistemantrianbank/blob/main/app/Services/QueueService.php"
click node_monitor_controller "https://github.com/reyvanno/sistemantrianbank/blob/main/app/Http/Controllers/MonitorController.php"
click node_ticket_pdf "https://github.com/reyvanno/sistemantrianbank/blob/main/resources/views/pdf/queue-ticket.blade.php"
click node_service_catalog "https://github.com/reyvanno/sistemantrianbank/blob/main/app/Services/ServiceService.php"
click node_admin_management "https://github.com/reyvanno/sistemantrianbank/tree/main/app/Http/Controllers/Admin"
click node_dashboard "https://github.com/reyvanno/sistemantrianbank/blob/main/app/Services/DashboardService.php"
click node_queue_records "https://github.com/reyvanno/sistemantrianbank/blob/main/app/Models/Queue.php"
click node_queue_logs "https://github.com/reyvanno/sistemantrianbank/blob/main/app/Models/QueueLog.php"
click node_counter_records "https://github.com/reyvanno/sistemantrianbank/blob/main/app/Models/Counter.php"
click node_service_records "https://github.com/reyvanno/sistemantrianbank/blob/main/app/Models/Service.php"
click node_auth_controller "https://github.com/reyvanno/sistemantrianbank/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.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_customer_queue,node_admin_queue_ui,node_monitor_ui toneBlue
class node_customer_controller,node_admin_queue_controller,node_queue_service,node_monitor_controller,node_ticket_pdf toneAmber
class node_service_catalog,node_admin_management,node_dashboard,node_auth_controller toneMint
class node_queue_records,node_queue_logs,node_counter_records,node_service_records,node_presence_store toneRose
class node_customer,node_staff,node_administrator toneIndigo
```

## Components

### User Interfaces

- [Queue Request UI](https://github.com/reyvanno/sistemantrianbank/blob/main/resources/js/Pages/Customer/Queue/Index.vue): `resources/js/Pages/Customer/Queue/Index.vue`
- [Queue Operations UI](https://github.com/reyvanno/sistemantrianbank/blob/main/resources/js/Pages/Admin/Queues/Index.vue): `resources/js/Pages/Admin/Queues/Index.vue`
- [Public Monitor UI](https://github.com/reyvanno/sistemantrianbank/blob/main/resources/js/Pages/Monitor.vue): `resources/js/Pages/Monitor.vue`

### Queue Operations

- [Customer Queue](https://github.com/reyvanno/sistemantrianbank/blob/main/app/Http/Controllers/Customer/QueueController.php): `app/Http/Controllers/Customer/QueueController.php`
- [Admin Queue](https://github.com/reyvanno/sistemantrianbank/blob/main/app/Http/Controllers/Admin/QueueController.php): `app/Http/Controllers/Admin/QueueController.php`
- [Queue Lifecycle](https://github.com/reyvanno/sistemantrianbank/blob/main/app/Services/QueueService.php): `app/Services/QueueService.php`
- [Monitor Data](https://github.com/reyvanno/sistemantrianbank/blob/main/app/Http/Controllers/MonitorController.php): `app/Http/Controllers/MonitorController.php`
- [Queue Ticket PDF](https://github.com/reyvanno/sistemantrianbank/blob/main/resources/views/pdf/queue-ticket.blade.php): `resources/views/pdf/queue-ticket.blade.php`

### Administration

- [Service Catalog](https://github.com/reyvanno/sistemantrianbank/blob/main/app/Services/ServiceService.php): `app/Services/ServiceService.php`
- [Admin Management](https://github.com/reyvanno/sistemantrianbank/tree/main/app/Http/Controllers/Admin): `app/Http/Controllers/Admin`
- [Dashboard Reporting](https://github.com/reyvanno/sistemantrianbank/blob/main/app/Services/DashboardService.php): `app/Services/DashboardService.php`
- [Session Authentication](https://github.com/reyvanno/sistemantrianbank/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php): `app/Http/Controllers/Auth/AuthenticatedSessionController.php`

### Application State

- [Queue Records](https://github.com/reyvanno/sistemantrianbank/blob/main/app/Models/Queue.php): `app/Models/Queue.php`
- [Queue Logs](https://github.com/reyvanno/sistemantrianbank/blob/main/app/Models/QueueLog.php): `app/Models/QueueLog.php`
- [Counter Records](https://github.com/reyvanno/sistemantrianbank/blob/main/app/Models/Counter.php): `app/Models/Counter.php`
- [Service Records](https://github.com/reyvanno/sistemantrianbank/blob/main/app/Models/Service.php): `app/Models/Service.php`
- **Redis Presence**

### Other components

- **Customer**
- **Staff**
- **Administrator**

## Connections

- Customer → Queue Request UI: requests ticket
- Queue Request UI → Customer Queue: submits request
- Customer Queue → Queue Lifecycle: creates queue
- Customer Queue → Service Catalog: loads services
- Customer Queue → Queue Records: loads ticket
- Customer Queue → Queue Ticket PDF: renders ticket
- Staff → Queue Operations UI: operates queue
- Queue Operations UI → Admin Queue: sends actions
- Admin Queue → Queue Lifecycle: dispatches lifecycle
- Admin Queue → Queue Records: loads queue data
- Queue Lifecycle → Queue Records: creates and updates
- Queue Lifecycle → Queue Logs: records actions
- Queue Lifecycle → Counter Records: checks counter
- Queue Lifecycle → Service Records: checks service
- Public Monitor UI → Monitor Data: polls status
- Monitor Data → Queue Records: reads queue state
- Monitor Data → Counter Records: reads counters
- Monitor Data → Redis Presence: checks presence
- Administrator → Admin Management: manages system
- Administrator → Dashboard Reporting: views reporting
- Admin Management → Service Catalog: manages services
- Session Authentication → Redis Presence: sets and clears presence
