# carilloandrei9264/university-queue-system architecture

> Architecture diagram of the GitHub repository carilloandrei9264/university-queue-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/carilloandrei9264/university-queue-system
- Repository: https://github.com/carilloandrei9264/university-queue-system

## Overview

NU Queue-It is a Laravel queue-management MVP for university offices. Students select a service, receive and track or cancel a ticket; staff operate assigned service windows to call, complete, skip, or recall tickets; a public display shows queue status. Administrators configure offices, services, accounts, windows, and breaks, import/export student rosters, and review activity. The graph reflects documented product capabilities and sampled controller/service calls; several admin and display details are documented in the README but their implementation excerpts were not provided.

Main entry points: [`routes/web.php`](https://github.com/carilloandrei9264/university-queue-system/blob/main/routes/web.php) (Web routes), [`app/Services/TicketQueueService.php`](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Services/TicketQueueService.php) (Queue rules), [`app/Services/ActivityLogger.php`](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Services/ActivityLogger.php) (Activity logger), [`app/Models/Department.php`](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Models/Department.php) (Departments)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Web entry and access"]
  node_web["Web routes<br/>[web.php]"]
  node_auth["Sign-in"]
  node_role["Role guard"]
  node_dashboard["Role dashboard"]
end

subgraph group_admin["Administration"]
  node_adminoffices["Office setup"]
  node_adminservices["Service setup"]
  node_adminstaff["Staff and windows"]
  node_adminstudents["Student accounts"]
  node_roster["Roster CSV"]
  node_activityview["Activity log view"]
end

subgraph group_queue["Ticket operations"]
  node_studenttickets["Student tickets"]
  node_staffqueue["Staff queue"]
  node_display["Public display"]
  node_queueops["Queue rules"]
  node_status["Ticket states<br/>[TicketStatus.php]"]
end

subgraph group_domain["Domain and records"]
  node_logger["Activity logger<br/>[ActivityLogger.php]"]
  node_department["Departments<br/>[Department.php]"]
  node_service["Services<br/>[Service.php]"]
  node_window["Service windows<br/>[ServiceWindow.php]"]
  node_ticket["Ticket records<br/>[Ticket.php]"]
  node_user["User accounts<br/>[User.php]"]
  node_counter["Daily counter<br/>[DailyCounter.php]"]
  node_audit["Audit records<br/>[AuditLog.php]"]
end

node_students(("Students"))
node_staff(("Office staff"))
node_admins(("Administrators"))
node_visitors(("Public visitors"))
node_database[("SQL database")]

node_students -->|"use"| node_web
node_staff -->|"use"| node_web
node_admins -->|"use"| node_web
node_visitors -->|"view"| node_web
node_web -->|"routes to"| node_auth
node_web -->|"routes to"| node_studenttickets
node_web -->|"routes to"| node_staffqueue
node_web -->|"routes to"| node_display
node_web -->|"routes to"| node_adminoffices
node_web -->|"routes to"| node_adminservices
node_web -->|"routes to"| node_adminstaff
node_web -->|"routes to"| node_adminstudents
node_web -->|"routes to"| node_activityview
node_web -->|"guards routes"| node_role
node_studenttickets -->|"invokes"| node_queueops
node_staffqueue -->|"invokes"| node_queueops
node_studenttickets -->|"queries"| node_department
node_studenttickets -->|"queries"| node_ticket
node_staffqueue -->|"queries"| node_window
node_staffqueue -->|"queries"| node_ticket
node_display -->|"queries"| node_department
node_display -->|"queries"| node_window
node_display -->|"queries"| node_ticket
node_queueops -->|"checks transitions"| node_status
node_queueops -->|"allocates numbers"| node_counter
node_queueops -->|"locks and reads"| node_department
node_queueops -->|"locks and reads"| node_service
node_queueops -->|"checks assignment"| node_window
node_queueops -->|"creates and updates"| node_ticket
node_queueops -->|"checks accounts"| node_user
node_queueops -->|"records actions"| node_logger
node_adminoffices -->|"manages"| node_department
node_adminoffices -->|"records actions"| node_logger
node_adminservices -->|"manages"| node_service
node_adminservices -->|"records actions"| node_logger
node_adminstaff -->|"manages assignments"| node_window
node_adminstaff -->|"manages accounts"| node_user
node_adminstaff -->|"records actions"| node_logger
node_adminstudents -->|"manages accounts"| node_user
node_adminstudents -->|"previews and imports"| node_roster
node_adminstudents -->|"records actions"| node_logger
node_roster -->|"creates accounts"| node_user
node_roster -->|"records imports"| node_logger
node_activityview -->|"reads log"| node_audit
node_logger -->|"writes records"| node_audit
node_department -.->|"persists via ORM"| node_database
node_service -.->|"persists via ORM"| node_database
node_window -.->|"persists via ORM"| node_database

click node_web "https://github.com/carilloandrei9264/university-queue-system/blob/main/routes/web.php"
click node_auth "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php"
click node_role "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Middleware/EnsureUserHasRole.php"
click node_dashboard "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/DashboardController.php"
click node_studenttickets "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Student/TicketController.php"
click node_staffqueue "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Staff/QueueController.php"
click node_display "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Display/QueueDisplayController.php"
click node_queueops "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Services/TicketQueueService.php"
click node_status "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Domain/TicketStatus.php"
click node_adminoffices "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Admin/DepartmentController.php"
click node_adminservices "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Admin/ServiceController.php"
click node_adminstaff "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Admin/StaffController.php"
click node_adminstudents "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Admin/StudentController.php"
click node_roster "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Services/StudentRosterCsv.php"
click node_activityview "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Admin/ActivityLogController.php"
click node_logger "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Services/ActivityLogger.php"
click node_department "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Models/Department.php"
click node_service "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Models/Service.php"
click node_window "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Models/ServiceWindow.php"
click node_ticket "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Models/Ticket.php"
click node_user "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Models/User.php"
click node_counter "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Models/DailyCounter.php"
click node_audit "https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Models/AuditLog.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_web,node_auth,node_role,node_dashboard toneBlue
class node_adminoffices,node_adminservices,node_adminstaff,node_adminstudents,node_roster,node_activityview,node_database toneAmber
class node_studenttickets,node_staffqueue,node_display,node_queueops,node_status toneMint
class node_logger,node_department,node_service,node_window,node_ticket,node_user,node_counter,node_audit toneRose
class node_students,node_staff,node_admins,node_visitors toneIndigo
```

## Components

### Web entry and access

- [Web routes](https://github.com/carilloandrei9264/university-queue-system/blob/main/routes/web.php): `routes/web.php`
- [Sign-in](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php): `app/Http/Controllers/Auth/AuthenticatedSessionController.php`
- [Role guard](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Middleware/EnsureUserHasRole.php): `app/Http/Middleware/EnsureUserHasRole.php`
- [Role dashboard](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/DashboardController.php): `app/Http/Controllers/DashboardController.php`

### Administration

- [Office setup](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Admin/DepartmentController.php): `app/Http/Controllers/Admin/DepartmentController.php`
- [Service setup](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Admin/ServiceController.php): `app/Http/Controllers/Admin/ServiceController.php`
- [Staff and windows](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Admin/StaffController.php): `app/Http/Controllers/Admin/StaffController.php`
- [Student accounts](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Admin/StudentController.php): `app/Http/Controllers/Admin/StudentController.php`
- [Roster CSV](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Services/StudentRosterCsv.php): `app/Services/StudentRosterCsv.php`
- [Activity log view](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Admin/ActivityLogController.php): `app/Http/Controllers/Admin/ActivityLogController.php`

### Ticket operations

- [Student tickets](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Student/TicketController.php): `app/Http/Controllers/Student/TicketController.php`
- [Staff queue](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Staff/QueueController.php): `app/Http/Controllers/Staff/QueueController.php`
- [Public display](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Http/Controllers/Display/QueueDisplayController.php): `app/Http/Controllers/Display/QueueDisplayController.php`
- [Queue rules](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Services/TicketQueueService.php): `app/Services/TicketQueueService.php`
- [Ticket states](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Domain/TicketStatus.php): `app/Domain/TicketStatus.php`

### Domain and records

- [Activity logger](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Services/ActivityLogger.php): `app/Services/ActivityLogger.php`
- [Departments](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Models/Department.php): `app/Models/Department.php`
- [Services](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Models/Service.php): `app/Models/Service.php`
- [Service windows](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Models/ServiceWindow.php): `app/Models/ServiceWindow.php`
- [Ticket records](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Models/Ticket.php): `app/Models/Ticket.php`
- [User accounts](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Models/User.php): `app/Models/User.php`
- [Daily counter](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Models/DailyCounter.php): `app/Models/DailyCounter.php`
- [Audit records](https://github.com/carilloandrei9264/university-queue-system/blob/main/app/Models/AuditLog.php): `app/Models/AuditLog.php`

### Other components

- **Students**
- **Office staff**
- **Administrators**
- **Public visitors**
- **SQL database**

## Connections

- Students → Web routes: use (evidence: `README.md`)
- Office staff → Web routes: use (evidence: `README.md`)
- Administrators → Web routes: use (evidence: `README.md`)
- Public visitors → Web routes: view (evidence: `README.md`)
- Web routes → Sign-in: routes to (evidence: `routes/web.php`)
- Web routes → Student tickets: routes to (evidence: `routes/web.php`)
- Web routes → Staff queue: routes to (evidence: `routes/web.php`)
- Web routes → Public display: routes to (evidence: `routes/web.php`)
- Web routes → Office setup: routes to (evidence: `routes/web.php`)
- Web routes → Service setup: routes to (evidence: `routes/web.php`)
- Web routes → Staff and windows: routes to (evidence: `routes/web.php`)
- Web routes → Student accounts: routes to (evidence: `routes/web.php`)
- Web routes → Activity log view: routes to (evidence: `routes/web.php`)
- Web routes → Role guard: guards routes
- Student tickets → Queue rules: invokes (evidence: `app/Http/Controllers/Student/TicketController.php`)
- Staff queue → Queue rules: invokes (evidence: `app/Http/Controllers/Staff/QueueController.php`)
- Student tickets → Departments: queries (evidence: `app/Http/Controllers/Student/TicketController.php`)
- Student tickets → Ticket records: queries (evidence: `app/Http/Controllers/Student/TicketController.php`)
- Staff queue → Service windows: queries (evidence: `app/Http/Controllers/Staff/QueueController.php`)
- Staff queue → Ticket records: queries (evidence: `app/Http/Controllers/Staff/QueueController.php`)
- Public display → Departments: queries (evidence: `app/Http/Controllers/Display/QueueDisplayController.php`)
- Public display → Service windows: queries (evidence: `app/Http/Controllers/Display/QueueDisplayController.php`)
- Public display → Ticket records: queries (evidence: `app/Http/Controllers/Display/QueueDisplayController.php`)
- Queue rules → Ticket states: checks transitions (evidence: `app/Services/TicketQueueService.php`)
- Queue rules → Daily counter: allocates numbers (evidence: `app/Services/TicketQueueService.php`)
- Queue rules → Departments: locks and reads (evidence: `app/Services/TicketQueueService.php`)
- Queue rules → Services: locks and reads (evidence: `app/Services/TicketQueueService.php`)
- Queue rules → Service windows: checks assignment (evidence: `app/Services/TicketQueueService.php`)
- Queue rules → Ticket records: creates and updates (evidence: `app/Services/TicketQueueService.php`)
- Queue rules → User accounts: checks accounts (evidence: `app/Services/TicketQueueService.php`)
- Queue rules → Activity logger: records actions (evidence: `app/Services/TicketQueueService.php`)
- Office setup → Departments: manages (evidence: `app/Http/Controllers/Admin/DepartmentController.php`)
- Office setup → Activity logger: records actions (evidence: `app/Http/Controllers/Admin/DepartmentController.php`)
- Service setup → Services: manages (evidence: `app/Http/Controllers/Admin/ServiceController.php`)
- Service setup → Activity logger: records actions (evidence: `app/Http/Controllers/Admin/ServiceController.php`)
- Staff and windows → Service windows: manages assignments (evidence: `app/Http/Controllers/Admin/StaffController.php`)
- Staff and windows → User accounts: manages accounts (evidence: `app/Http/Controllers/Admin/StaffController.php`)
- Staff and windows → Activity logger: records actions (evidence: `app/Http/Controllers/Admin/StaffController.php`)
- Student accounts → User accounts: manages accounts (evidence: `app/Http/Controllers/Admin/StudentController.php`)
- Student accounts → Roster CSV: previews and imports (evidence: `app/Http/Controllers/Admin/StudentController.php`)
- Student accounts → Activity logger: records actions (evidence: `app/Http/Controllers/Admin/StudentController.php`)
- Roster CSV → User accounts: creates accounts (evidence: `app/Services/StudentRosterCsv.php`)
- Roster CSV → Activity logger: records imports (evidence: `app/Services/StudentRosterCsv.php`)
- Activity log view → Audit records: reads log (evidence: `app/Http/Controllers/Admin/ActivityLogController.php`)
- Activity logger → Audit records: writes records (evidence: `app/Services/ActivityLogger.php`)
- Departments → SQL database: persists via ORM
- Services → SQL database: persists via ORM
- Service windows → SQL database: persists via ORM
