# parsuka12/softwarehelpdesk architecture

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

- Interactive diagram: https://gitdiagram.com/parsuka12/softwarehelpdesk
- Repository: https://github.com/parsuka12/softwarehelpdesk

## Overview

Mesa de Ayuda is a web help desk for users and support staff. Users sign in, create and track priority/SLA-based tickets, while staff manage tickets, comments and assignments; the application also provides metrics, notifications, email intake and an on-demand Gemini assistant using team ticket history. The graph combines the documented capabilities with relationships visible in the supplied excerpts and source index. Several route/controller and scheduled-job implementations were not sampled, so those connections are omitted rather than inferred.

Main entry points: [`backend/src/config/db.js`](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/config/db.js) (PostgreSQL), [`backend/src/controllers/ticket.controller.js`](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/controllers/ticket.controller.js) (Ticket operations), [`frontend/src/api/http.js`](https://github.com/parsuka12/softwarehelpdesk/blob/main/frontend/src/api/http.js) (API client), [`backend/src/services/ai/asistente.service.js`](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/services/ai/asistente.service.js) (Assistant context)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_webapp["Vue application<br/>[App.vue]"]
  node_authui["Sign-in state<br/>[auth.js]"]
  node_http["API client<br/>[http.js]"]
  node_ticketui["Ticket interface<br/>[TicketDetail.vue]"]
  node_dashboardui["Metrics view<br/>[DashboardView.vue]"]
  node_uistate["Interface state<br/>[ui.js]"]
end

subgraph group_api["API and access"]
  node_server["Express API<br/>[app.js]"]
  node_ticketroutes["Ticket routes<br/>[ticket.routes.js]"]
  node_authroutes["Auth routes<br/>[auth.routes.js]"]
end

subgraph group_tickets["Help desk workflows"]
  node_ticketctl["Ticket operations"]
  node_ticketservice["Ticket queries<br/>[ticket.service.js]"]
  node_dashboardctl["Dashboard metrics"]
  node_usersctl["User management<br/>[user.controller.js]"]
  node_mailintake["Email intake"]
  node_aictl["AI suggestions<br/>[ia.controller.js]"]
end

subgraph group_services["Supporting services"]
  node_assistant["Assistant context"]
  node_gemini["Gemini client<br/>[gemini.service.js]"]
  node_notify["Notifications"]
  node_mail["Mail delivery<br/>[mail.service.js]"]
  node_sla["SLA rules<br/>[sla.js]"]
end

subgraph group_data["Runtime configuration"]
  node_database[("PostgreSQL<br/>[db.js]")]
end

node_user(("Help desk user"))
node_geminisvc{{"Google Gemini"}}
node_smtp{{"SMTP service"}}

node_user -.->|"uses"| node_webapp
node_webapp -->|"uses"| node_authui
node_authui -->|"calls"| node_http
node_ticketui -->|"calls"| node_http
node_ticketui -->|"updates"| node_uistate
node_dashboardui -->|"calls"| node_http
node_dashboardui -->|"reads"| node_uistate
node_http -.->|"sends requests"| node_server
node_server -->|"mounts routes"| node_ticketroutes
node_ticketroutes -->|"dispatches"| node_ticketctl
node_authroutes -->|"authenticates"| node_database
node_ticketctl -->|"calls"| node_ticketservice
node_ticketctl -->|"reads and writes"| node_database
node_ticketservice -->|"queries"| node_database
node_ticketctl -->|"calculates deadlines"| node_sla
node_ticketctl -->|"notifies"| node_notify
node_dashboardctl -->|"queries"| node_database
node_dashboardctl -->|"uses"| node_sla
node_usersctl -->|"queries"| node_database
node_mailintake -->|"uses"| node_ticketservice
node_mailintake -->|"sends mail"| node_mail
node_aictl -->|"requests suggestions"| node_assistant
node_assistant -->|"reads history"| node_database
node_assistant -->|"requests completion"| node_gemini
node_gemini -.->|"calls"| node_geminisvc
node_notify -->|"sends email"| node_mail
node_mail -.->|"delivers through"| node_smtp

click node_webapp "https://github.com/parsuka12/softwarehelpdesk/blob/main/frontend/src/App.vue"
click node_authui "https://github.com/parsuka12/softwarehelpdesk/blob/main/frontend/src/stores/auth.js"
click node_http "https://github.com/parsuka12/softwarehelpdesk/blob/main/frontend/src/api/http.js"
click node_ticketui "https://github.com/parsuka12/softwarehelpdesk/blob/main/frontend/src/components/TicketDetail.vue"
click node_dashboardui "https://github.com/parsuka12/softwarehelpdesk/blob/main/frontend/src/views/DashboardView.vue"
click node_uistate "https://github.com/parsuka12/softwarehelpdesk/blob/main/frontend/src/stores/ui.js"
click node_server "https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/app.js"
click node_ticketroutes "https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/routes/ticket.routes.js"
click node_authroutes "https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/routes/auth.routes.js"
click node_ticketctl "https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/controllers/ticket.controller.js"
click node_ticketservice "https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/services/ticket.service.js"
click node_dashboardctl "https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/controllers/dashboard.controller.js"
click node_usersctl "https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/controllers/user.controller.js"
click node_mailintake "https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/controllers/correo.controller.js"
click node_aictl "https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/controllers/ia.controller.js"
click node_assistant "https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/services/ai/asistente.service.js"
click node_gemini "https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/services/ai/gemini.service.js"
click node_notify "https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/services/notification.service.js"
click node_mail "https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/services/mail.service.js"
click node_sla "https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/utils/sla.js"
click node_database "https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/config/db.js"

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_webapp,node_authui,node_http,node_ticketui,node_dashboardui,node_uistate,node_user toneBlue
class node_server,node_ticketroutes,node_authroutes toneAmber
class node_ticketctl,node_ticketservice,node_dashboardctl,node_usersctl,node_mailintake,node_aictl toneMint
class node_assistant,node_gemini,node_notify,node_mail,node_sla toneRose
class node_database,node_geminisvc,node_smtp toneIndigo
```

## Components

### Web interface

- [Vue application](https://github.com/parsuka12/softwarehelpdesk/blob/main/frontend/src/App.vue): `frontend/src/App.vue`
- [Sign-in state](https://github.com/parsuka12/softwarehelpdesk/blob/main/frontend/src/stores/auth.js): `frontend/src/stores/auth.js`
- [API client](https://github.com/parsuka12/softwarehelpdesk/blob/main/frontend/src/api/http.js): `frontend/src/api/http.js`
- [Ticket interface](https://github.com/parsuka12/softwarehelpdesk/blob/main/frontend/src/components/TicketDetail.vue): `frontend/src/components/TicketDetail.vue`
- [Metrics view](https://github.com/parsuka12/softwarehelpdesk/blob/main/frontend/src/views/DashboardView.vue): `frontend/src/views/DashboardView.vue`
- [Interface state](https://github.com/parsuka12/softwarehelpdesk/blob/main/frontend/src/stores/ui.js): `frontend/src/stores/ui.js`

### API and access

- [Express API](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/app.js): `backend/src/app.js`
- [Ticket routes](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/routes/ticket.routes.js): `backend/src/routes/ticket.routes.js`
- [Auth routes](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/routes/auth.routes.js): `backend/src/routes/auth.routes.js`

### Help desk workflows

- [Ticket operations](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/controllers/ticket.controller.js): `backend/src/controllers/ticket.controller.js`
- [Ticket queries](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/services/ticket.service.js): `backend/src/services/ticket.service.js`
- [Dashboard metrics](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/controllers/dashboard.controller.js): `backend/src/controllers/dashboard.controller.js`
- [User management](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/controllers/user.controller.js): `backend/src/controllers/user.controller.js`
- [Email intake](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/controllers/correo.controller.js): `backend/src/controllers/correo.controller.js`
- [AI suggestions](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/controllers/ia.controller.js): `backend/src/controllers/ia.controller.js`

### Supporting services

- [Assistant context](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/services/ai/asistente.service.js): `backend/src/services/ai/asistente.service.js`
- [Gemini client](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/services/ai/gemini.service.js): `backend/src/services/ai/gemini.service.js`
- [Notifications](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/services/notification.service.js): `backend/src/services/notification.service.js`
- [Mail delivery](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/services/mail.service.js): `backend/src/services/mail.service.js`
- [SLA rules](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/utils/sla.js): `backend/src/utils/sla.js`

### Runtime configuration

- [PostgreSQL](https://github.com/parsuka12/softwarehelpdesk/blob/main/backend/src/config/db.js): `backend/src/config/db.js`

### Other components

- **Help desk user**
- **Google Gemini**
- **SMTP service**

## Connections

- Help desk user → Vue application: uses (evidence: `README.md`)
- Vue application → Sign-in state: uses (evidence: `frontend/src/App.vue`)
- Sign-in state → API client: calls (evidence: `frontend/src/stores/auth.js`)
- Ticket interface → API client: calls (evidence: `frontend/src/components/TicketDetail.vue`)
- Ticket interface → Interface state: updates (evidence: `frontend/src/components/TicketDetail.vue`)
- Metrics view → API client: calls (evidence: `frontend/src/views/DashboardView.vue`)
- Metrics view → Interface state: reads (evidence: `frontend/src/views/DashboardView.vue`)
- API client → Express API: sends requests (evidence: `README.md`)
- Express API → Ticket routes: mounts routes (evidence: `backend/src/app.js`)
- Ticket routes → Ticket operations: dispatches (evidence: `backend/src/routes/ticket.routes.js`)
- Auth routes → PostgreSQL: authenticates (evidence: `backend/src/routes/auth.routes.js`)
- Ticket operations → Ticket queries: calls (evidence: `backend/src/controllers/ticket.controller.js`)
- Ticket operations → PostgreSQL: reads and writes (evidence: `backend/src/controllers/ticket.controller.js`)
- Ticket queries → PostgreSQL: queries (evidence: `backend/src/services/ticket.service.js`)
- Ticket operations → SLA rules: calculates deadlines (evidence: `backend/src/controllers/ticket.controller.js`)
- Ticket operations → Notifications: notifies (evidence: `backend/src/controllers/ticket.controller.js`)
- Dashboard metrics → PostgreSQL: queries (evidence: `backend/src/controllers/dashboard.controller.js`)
- Dashboard metrics → SLA rules: uses (evidence: `backend/src/controllers/dashboard.controller.js`)
- User management → PostgreSQL: queries (evidence: `backend/src/controllers/user.controller.js`)
- Email intake → Ticket queries: uses (evidence: `backend/src/controllers/correo.controller.js`)
- Email intake → Mail delivery: sends mail (evidence: `backend/src/controllers/correo.controller.js`)
- AI suggestions → Assistant context: requests suggestions (evidence: `backend/src/controllers/ia.controller.js`)
- Assistant context → PostgreSQL: reads history (evidence: `backend/src/services/ai/asistente.service.js`)
- Assistant context → Gemini client: requests completion (evidence: `backend/src/services/ai/asistente.service.js`)
- Gemini client → Google Gemini: calls
- Notifications → Mail delivery: sends email (evidence: `backend/src/services/notification.service.js`)
- Mail delivery → SMTP service: delivers through
