# mrsudayon/helpdesk architecture

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

- Interactive diagram: https://gitdiagram.com/mrsudayon/helpdesk
- Repository: https://github.com/mrsudayon/helpdesk

## Overview

This is a PHP/MySQL helpdesk application. Users sign in, browse and create tickets, exchange replies, and manage ticket status; administrators also maintain users, subjects, and departments. The README additionally documents tutorials, search and pagination, and email notifications. The graph shows the shared initialization and database layer. Some page and action implementations were not excerpted, so their links are limited to relationships documented in the README or listed in the source index.

Main entry points: [`init.php`](https://github.com/mrsudayon/helpdesk/blob/main/init.php) (Session bootstrap), [`class/Tickets.php`](https://github.com/mrsudayon/helpdesk/blob/main/class/Tickets.php) (Ticket services), [`class/Users.php`](https://github.com/mrsudayon/helpdesk/blob/main/class/Users.php) (User services), [`class/Subject.php`](https://github.com/mrsudayon/helpdesk/blob/main/class/Subject.php) (Subject services)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web entry points"]
  node_login["Sign in<br/>[login.php]"]
  node_register["Registration<br/>[register.php]"]
  node_home["Helpdesk home<br/>[introduction.php]"]
  node_tutorial["Tutorial library<br/>[tutorial.php]"]
end

subgraph group_tickets["Ticket workflow"]
  node_ticketpage["Ticket page<br/>[ticket.php]"]
  node_ticketview["Ticket detail<br/>[view_ticket.php]"]
  node_createmodel["Ticket form"]
  node_ticketactions["Ticket actions<br/>[ticket_action.php]"]
end

subgraph group_admin["Administration"]
  node_subjectpage["Subject admin<br/>[subject.php]"]
  node_subjectactions["Subject actions<br/>[subject_action.php]"]
  node_departmentpage["Department admin<br/>[department.php]"]
  node_departmentactions["Department actions"]
  node_userpage["User admin<br/>[user.php]"]
  node_useractions["User actions<br/>[user_action.php]"]
end

subgraph group_core["Shared services"]
  node_init["Session bootstrap<br/>[init.php]"]
  node_users["User services<br/>[Users.php]"]
  node_ticketsvc["Ticket services<br/>[Tickets.php]"]
  node_subjects["Subject services<br/>[Subject.php]"]
  node_departments["Department services<br/>[Department.php]"]
  node_database["Database access<br/>[Database.php]"]
end

node_user(("Helpdesk user"))
node_mysql[("MySQL")]
node_mail["Email service"]

node_user -->|"signs in"| node_login
node_user -->|"registers"| node_register
node_user -->|"uses portal"| node_home
node_home -->|"opens tutorials"| node_tutorial
node_home -->|"opens tickets"| node_ticketpage
node_login -->|"loads session"| node_init
node_register -->|"loads session"| node_init
node_home -->|"loads session"| node_init
node_ticketpage -->|"loads services"| node_init
node_ticketview -->|"loads services"| node_init
node_subjectpage -->|"loads services"| node_init
node_departmentpage -->|"loads services"| node_init
node_userpage -->|"loads services"| node_init
node_login -->|"authenticates with"| node_users
node_register -.->|"registers through"| node_users
node_createmodel -->|"loads choices"| node_subjects
node_ticketpage -->|"uses ticket services"| node_ticketsvc
node_ticketview -->|"uses ticket services"| node_ticketsvc
node_ticketactions -->|"loads services"| node_init
node_subjectactions -->|"loads services"| node_init
node_departmentactions -->|"loads services"| node_init
node_useractions -->|"loads services"| node_init
node_subjectpage -->|"uses subject services"| node_subjects
node_departmentpage -->|"uses department services"| node_departments
node_userpage -->|"uses user services"| node_users
node_init -->|"constructs"| node_database
node_init -->|"constructs"| node_users
node_init -->|"constructs"| node_ticketsvc
node_init -->|"constructs"| node_subjects
node_init -->|"constructs"| node_departments
node_users -->|"extends"| node_database
node_ticketsvc -->|"extends"| node_database
node_subjects -->|"extends"| node_database
node_departments -->|"extends"| node_database
node_users -->|"queries"| node_mysql
node_ticketsvc -->|"queries"| node_mysql
node_subjects -->|"queries"| node_mysql
node_departments -->|"queries"| node_mysql
node_database -->|"connects"| node_mysql
node_ticketsvc -->|"uses user service"| node_users
node_ticketsvc -->|"uses subject service"| node_subjects
node_ticketsvc -->|"uses department service"| node_departments
node_ticketsvc -->|"sends notifications"| node_mail

click node_login "https://github.com/mrsudayon/helpdesk/blob/main/login.php"
click node_register "https://github.com/mrsudayon/helpdesk/blob/main/register.php"
click node_home "https://github.com/mrsudayon/helpdesk/blob/main/introduction.php"
click node_tutorial "https://github.com/mrsudayon/helpdesk/blob/main/tutorial.php"
click node_ticketpage "https://github.com/mrsudayon/helpdesk/blob/main/ticket.php"
click node_ticketview "https://github.com/mrsudayon/helpdesk/blob/main/view_ticket.php"
click node_createmodel "https://github.com/mrsudayon/helpdesk/blob/main/add_ticket_model.php"
click node_ticketactions "https://github.com/mrsudayon/helpdesk/blob/main/ticket_action.php"
click node_subjectpage "https://github.com/mrsudayon/helpdesk/blob/main/subject.php"
click node_subjectactions "https://github.com/mrsudayon/helpdesk/blob/main/subject_action.php"
click node_departmentpage "https://github.com/mrsudayon/helpdesk/blob/main/department.php"
click node_departmentactions "https://github.com/mrsudayon/helpdesk/blob/main/department_action.php"
click node_userpage "https://github.com/mrsudayon/helpdesk/blob/main/user.php"
click node_useractions "https://github.com/mrsudayon/helpdesk/blob/main/user_action.php"
click node_init "https://github.com/mrsudayon/helpdesk/blob/main/init.php"
click node_users "https://github.com/mrsudayon/helpdesk/blob/main/class/Users.php"
click node_ticketsvc "https://github.com/mrsudayon/helpdesk/blob/main/class/Tickets.php"
click node_subjects "https://github.com/mrsudayon/helpdesk/blob/main/class/Subject.php"
click node_departments "https://github.com/mrsudayon/helpdesk/blob/main/class/Department.php"
click node_database "https://github.com/mrsudayon/helpdesk/blob/main/class/Database.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_login,node_register,node_home,node_tutorial,node_user toneBlue
class node_ticketpage,node_ticketview,node_createmodel,node_ticketactions,node_mysql toneAmber
class node_subjectpage,node_subjectactions,node_departmentpage,node_departmentactions,node_userpage,node_useractions toneMint
class node_init,node_users,node_ticketsvc,node_subjects,node_departments,node_database toneRose
class node_mail toneIndigo
```

## Components

### Web entry points

- [Sign in](https://github.com/mrsudayon/helpdesk/blob/main/login.php): `login.php`
- [Registration](https://github.com/mrsudayon/helpdesk/blob/main/register.php): `register.php`
- [Helpdesk home](https://github.com/mrsudayon/helpdesk/blob/main/introduction.php): `introduction.php`
- [Tutorial library](https://github.com/mrsudayon/helpdesk/blob/main/tutorial.php): `tutorial.php`

### Ticket workflow

- [Ticket page](https://github.com/mrsudayon/helpdesk/blob/main/ticket.php): `ticket.php`
- [Ticket detail](https://github.com/mrsudayon/helpdesk/blob/main/view_ticket.php): `view_ticket.php`
- [Ticket form](https://github.com/mrsudayon/helpdesk/blob/main/add_ticket_model.php): `add_ticket_model.php`
- [Ticket actions](https://github.com/mrsudayon/helpdesk/blob/main/ticket_action.php): `ticket_action.php`

### Administration

- [Subject admin](https://github.com/mrsudayon/helpdesk/blob/main/subject.php): `subject.php`
- [Subject actions](https://github.com/mrsudayon/helpdesk/blob/main/subject_action.php): `subject_action.php`
- [Department admin](https://github.com/mrsudayon/helpdesk/blob/main/department.php): `department.php`
- [Department actions](https://github.com/mrsudayon/helpdesk/blob/main/department_action.php): `department_action.php`
- [User admin](https://github.com/mrsudayon/helpdesk/blob/main/user.php): `user.php`
- [User actions](https://github.com/mrsudayon/helpdesk/blob/main/user_action.php): `user_action.php`

### Shared services

- [Session bootstrap](https://github.com/mrsudayon/helpdesk/blob/main/init.php): `init.php`
- [User services](https://github.com/mrsudayon/helpdesk/blob/main/class/Users.php): `class/Users.php`
- [Ticket services](https://github.com/mrsudayon/helpdesk/blob/main/class/Tickets.php): `class/Tickets.php`
- [Subject services](https://github.com/mrsudayon/helpdesk/blob/main/class/Subject.php): `class/Subject.php`
- [Department services](https://github.com/mrsudayon/helpdesk/blob/main/class/Department.php): `class/Department.php`
- [Database access](https://github.com/mrsudayon/helpdesk/blob/main/class/Database.php): `class/Database.php`

### Other components

- **Helpdesk user**
- **MySQL**
- **Email service**

## Connections

- Helpdesk user → Sign in: signs in (evidence: `README.md`)
- Helpdesk user → Registration: registers (evidence: `README.md`)
- Helpdesk user → Helpdesk home: uses portal (evidence: `README.md`)
- Helpdesk home → Tutorial library: opens tutorials
- Helpdesk home → Ticket page: opens tickets
- Sign in → Session bootstrap: loads session (evidence: `login.php`)
- Registration → Session bootstrap: loads session (evidence: `register.php`)
- Helpdesk home → Session bootstrap: loads session (evidence: `introduction.php`)
- Ticket page → Session bootstrap: loads services (evidence: `ticket.php`)
- Ticket detail → Session bootstrap: loads services (evidence: `view_ticket.php`)
- Subject admin → Session bootstrap: loads services (evidence: `subject.php`)
- Department admin → Session bootstrap: loads services (evidence: `department.php`)
- User admin → Session bootstrap: loads services (evidence: `user.php`)
- Sign in → User services: authenticates with (evidence: `login.php`)
- Registration → User services: registers through
- Ticket form → Subject services: loads choices (evidence: `add_ticket_model.php`)
- Ticket page → Ticket services: uses ticket services (evidence: `ticket.php`)
- Ticket detail → Ticket services: uses ticket services (evidence: `view_ticket.php`)
- Ticket actions → Session bootstrap: loads services (evidence: `ticket_action.php`)
- Subject actions → Session bootstrap: loads services (evidence: `subject_action.php`)
- Department actions → Session bootstrap: loads services (evidence: `department_action.php`)
- User actions → Session bootstrap: loads services (evidence: `user_action.php`)
- Subject admin → Subject services: uses subject services (evidence: `subject.php`)
- Department admin → Department services: uses department services (evidence: `department.php`)
- User admin → User services: uses user services (evidence: `user.php`)
- Session bootstrap → Database access: constructs (evidence: `init.php`)
- Session bootstrap → User services: constructs (evidence: `init.php`)
- Session bootstrap → Ticket services: constructs (evidence: `init.php`)
- Session bootstrap → Subject services: constructs (evidence: `init.php`)
- Session bootstrap → Department services: constructs (evidence: `init.php`)
- User services → Database access: extends (evidence: `class/Users.php`)
- Ticket services → Database access: extends (evidence: `class/Tickets.php`)
- Subject services → Database access: extends (evidence: `class/Subject.php`)
- Department services → Database access: extends (evidence: `class/Department.php`)
- User services → MySQL: queries (evidence: `class/Users.php`)
- Ticket services → MySQL: queries (evidence: `class/Tickets.php`)
- Subject services → MySQL: queries (evidence: `class/Subject.php`)
- Department services → MySQL: queries (evidence: `class/Department.php`)
- Database access → MySQL: connects (evidence: `class/Database.php`)
- Ticket services → User services: uses user service (evidence: `class/Tickets.php`)
- Ticket services → Subject services: uses subject service (evidence: `class/Tickets.php`)
- Ticket services → Department services: uses department service (evidence: `class/Tickets.php`)
- Ticket services → Email service: sends notifications (evidence: `class/Tickets.php`)
