# 1blixen/support-tickets-system architecture

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

- Interactive diagram: https://gitdiagram.com/1blixen/support-tickets-system
- Repository: https://github.com/1blixen/support-tickets-system

## Overview

This is an Express-based ticket-management API with authentication, user/employee administration, ticket assignment and comments. The main workflow is authenticated ticket operations, with admin assignment and ticket-linked comments as distinct stages. Authentication also includes email confirmation and token issuance. Source excerpts establish ticket, comment and employee controller calls; the auth controller and bootstrap wiring are known only from the source index, so those relationships are left unverified where needed.

Main entry points: [`src/modules/auth/auth.services.ts`](https://github.com/1blixen/support-tickets-system/blob/main/src/modules/auth/auth.services.ts) (Authentication), [`src/bootstrap.ts`](https://github.com/1blixen/support-tickets-system/blob/main/src/bootstrap.ts) (Server Bootstrap), [`src/modules/tickets/ticket.controller.ts`](https://github.com/1blixen/support-tickets-system/blob/main/src/modules/tickets/ticket.controller.ts) (Ticket Routes), [`src/modules/users/employees/employee.controller.ts`](https://github.com/1blixen/support-tickets-system/blob/main/src/modules/users/employees/employee.controller.ts) (Employee Routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["API Runtime"]
  node_bootstrap["Server Bootstrap<br/>[bootstrap.ts]"]
  node_auth_middleware["Token Authentication<br/>[auth.middleware.ts]"]
  node_validation_middleware["Request Validation"]
end

subgraph group_identity["Identity &amp; Users"]
  node_auth_controller["Auth Routes<br/>[auth.controller.ts]"]
  node_employee_controller["Employee Routes"]
  node_auth_service["Authentication<br/>[auth.services.ts]"]
  node_user_model[("User Records<br/>[user.model.ts]")]
  node_employee_service["Employee Management"]
end

subgraph group_tickets["Ticket Workflow"]
  node_ticket_controller["Ticket Routes"]
  node_comment_controller["Comment Routes"]
  node_ticket_service["Ticket Operations<br/>[ticket.services.ts]"]
  node_ticket_model[("Ticket Records<br/>[ticket.model.ts]")]
  node_comment_service["Comment Operations"]
  node_comment_model[("Comment Records<br/>[comment.model.ts]")]
end

subgraph group_shared["Shared Services"]
  node_mongoose["MongoDB Connection"]
  node_redis_connection["Redis Connection"]
  node_redis_services["Redis Keys<br/>[redis.services.ts]"]
  node_token["Token Utilities<br/>[token.ts]"]
  node_email["Email Delivery<br/>[sendEmail.ts]"]
  node_otp["OTP Generation<br/>[otp.ts]"]
  node_email_template["Email Template<br/>[template.ts]"]
  node_success["Success Response<br/>[succesRes.ts]"]
  node_hash["Password Hashing<br/>[hash.ts]"]
end

node_client(("API Client"))

node_bootstrap -->|"imports connection"| node_mongoose
node_bootstrap -->|"imports connection"| node_redis_connection
node_bootstrap -.->|"loads routes"| node_auth_controller
node_bootstrap -.->|"loads routes"| node_ticket_controller
node_bootstrap -.->|"loads routes"| node_comment_controller
node_bootstrap -.->|"loads routes"| node_employee_controller
node_client -.->|"sends requests"| node_ticket_controller
node_ticket_controller -->|"calls"| node_ticket_service
node_comment_controller -->|"calls"| node_comment_service
node_employee_controller -->|"calls"| node_employee_service
node_ticket_service -->|"reads and writes"| node_ticket_model
node_ticket_service -->|"looks up assignee"| node_user_model
node_comment_service -->|"references ticket"| node_ticket_model
node_comment_service -->|"reads and writes"| node_comment_model
node_employee_service -->|"manages users"| node_user_model
node_auth_controller -.->|"calls"| node_auth_service
node_auth_service -->|"reads and creates"| node_user_model
node_auth_service -->|"hashes password"| node_hash
node_auth_service -->|"creates OTP"| node_otp
node_auth_service -->|"sends email"| node_email
node_auth_service -->|"renders email"| node_email_template
node_auth_service -->|"stores OTP and ID"| node_redis_connection
node_auth_service -->|"uses key helpers"| node_redis_services
node_auth_service -->|"issues tokens"| node_token
node_auth_middleware -->|"decodes token"| node_token
node_ticket_controller -->|"authenticates requests"| node_auth_middleware
node_comment_controller -->|"authenticates requests"| node_auth_middleware
node_employee_controller -->|"authenticates requests"| node_auth_middleware
node_ticket_controller -->|"validates input"| node_validation_middleware
node_comment_controller -->|"validates input"| node_validation_middleware
node_employee_controller -->|"validates input"| node_validation_middleware
node_ticket_controller -->|"formats response"| node_success
node_comment_controller -->|"formats response"| node_success
node_employee_controller -->|"formats response"| node_success

click node_bootstrap "https://github.com/1blixen/support-tickets-system/blob/main/src/bootstrap.ts"
click node_auth_controller "https://github.com/1blixen/support-tickets-system/blob/main/src/modules/auth/auth.controller.ts"
click node_ticket_controller "https://github.com/1blixen/support-tickets-system/blob/main/src/modules/tickets/ticket.controller.ts"
click node_comment_controller "https://github.com/1blixen/support-tickets-system/blob/main/src/modules/comments/comment.controller.ts"
click node_employee_controller "https://github.com/1blixen/support-tickets-system/blob/main/src/modules/users/employees/employee.controller.ts"
click node_auth_service "https://github.com/1blixen/support-tickets-system/blob/main/src/modules/auth/auth.services.ts"
click node_user_model "https://github.com/1blixen/support-tickets-system/blob/main/src/modules/users/user.model.ts"
click node_employee_service "https://github.com/1blixen/support-tickets-system/blob/main/src/modules/users/employees/employee.services.ts"
click node_ticket_service "https://github.com/1blixen/support-tickets-system/blob/main/src/modules/tickets/ticket.services.ts"
click node_ticket_model "https://github.com/1blixen/support-tickets-system/blob/main/src/modules/tickets/ticket.model.ts"
click node_comment_service "https://github.com/1blixen/support-tickets-system/blob/main/src/modules/comments/comment.services.ts"
click node_comment_model "https://github.com/1blixen/support-tickets-system/blob/main/src/modules/comments/comment.model.ts"
click node_auth_middleware "https://github.com/1blixen/support-tickets-system/blob/main/src/middlewares/auth.middleware.ts"
click node_validation_middleware "https://github.com/1blixen/support-tickets-system/blob/main/src/middlewares/validation.middleware.ts"
click node_mongoose "https://github.com/1blixen/support-tickets-system/blob/main/src/DB/mongoose.connection.ts"
click node_redis_connection "https://github.com/1blixen/support-tickets-system/blob/main/src/DB/redis.connection.ts"
click node_redis_services "https://github.com/1blixen/support-tickets-system/blob/main/src/utils/redis/redis.services.ts"
click node_token "https://github.com/1blixen/support-tickets-system/blob/main/src/utils/security/token.ts"
click node_email "https://github.com/1blixen/support-tickets-system/blob/main/src/utils/email/sendEmail.ts"
click node_otp "https://github.com/1blixen/support-tickets-system/blob/main/src/utils/email/otp.ts"
click node_email_template "https://github.com/1blixen/support-tickets-system/blob/main/src/utils/email/template.ts"
click node_success "https://github.com/1blixen/support-tickets-system/blob/main/src/utils/succesRes.ts"
click node_hash "https://github.com/1blixen/support-tickets-system/blob/main/src/utils/security/hash.ts"

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_bootstrap,node_auth_middleware,node_validation_middleware,node_client toneBlue
class node_auth_controller,node_employee_controller,node_auth_service,node_user_model,node_employee_service toneAmber
class node_ticket_controller,node_comment_controller,node_ticket_service,node_ticket_model,node_comment_service,node_comment_model toneMint
class node_mongoose,node_redis_connection,node_redis_services,node_token,node_email,node_otp,node_email_template,node_success,node_hash toneRose
```

## Components

### API Runtime

- [Server Bootstrap](https://github.com/1blixen/support-tickets-system/blob/main/src/bootstrap.ts): `src/bootstrap.ts`
- [Token Authentication](https://github.com/1blixen/support-tickets-system/blob/main/src/middlewares/auth.middleware.ts): `src/middlewares/auth.middleware.ts`
- [Request Validation](https://github.com/1blixen/support-tickets-system/blob/main/src/middlewares/validation.middleware.ts): `src/middlewares/validation.middleware.ts`

### Identity & Users

- [Auth Routes](https://github.com/1blixen/support-tickets-system/blob/main/src/modules/auth/auth.controller.ts): `src/modules/auth/auth.controller.ts`
- [Employee Routes](https://github.com/1blixen/support-tickets-system/blob/main/src/modules/users/employees/employee.controller.ts): `src/modules/users/employees/employee.controller.ts`
- [Authentication](https://github.com/1blixen/support-tickets-system/blob/main/src/modules/auth/auth.services.ts): `src/modules/auth/auth.services.ts`
- [User Records](https://github.com/1blixen/support-tickets-system/blob/main/src/modules/users/user.model.ts): `src/modules/users/user.model.ts`
- [Employee Management](https://github.com/1blixen/support-tickets-system/blob/main/src/modules/users/employees/employee.services.ts): `src/modules/users/employees/employee.services.ts`

### Ticket Workflow

- [Ticket Routes](https://github.com/1blixen/support-tickets-system/blob/main/src/modules/tickets/ticket.controller.ts): `src/modules/tickets/ticket.controller.ts`
- [Comment Routes](https://github.com/1blixen/support-tickets-system/blob/main/src/modules/comments/comment.controller.ts): `src/modules/comments/comment.controller.ts`
- [Ticket Operations](https://github.com/1blixen/support-tickets-system/blob/main/src/modules/tickets/ticket.services.ts): `src/modules/tickets/ticket.services.ts`
- [Ticket Records](https://github.com/1blixen/support-tickets-system/blob/main/src/modules/tickets/ticket.model.ts): `src/modules/tickets/ticket.model.ts`
- [Comment Operations](https://github.com/1blixen/support-tickets-system/blob/main/src/modules/comments/comment.services.ts): `src/modules/comments/comment.services.ts`
- [Comment Records](https://github.com/1blixen/support-tickets-system/blob/main/src/modules/comments/comment.model.ts): `src/modules/comments/comment.model.ts`

### Shared Services

- [MongoDB Connection](https://github.com/1blixen/support-tickets-system/blob/main/src/DB/mongoose.connection.ts): `src/DB/mongoose.connection.ts`
- [Redis Connection](https://github.com/1blixen/support-tickets-system/blob/main/src/DB/redis.connection.ts): `src/DB/redis.connection.ts`
- [Redis Keys](https://github.com/1blixen/support-tickets-system/blob/main/src/utils/redis/redis.services.ts): `src/utils/redis/redis.services.ts`
- [Token Utilities](https://github.com/1blixen/support-tickets-system/blob/main/src/utils/security/token.ts): `src/utils/security/token.ts`
- [Email Delivery](https://github.com/1blixen/support-tickets-system/blob/main/src/utils/email/sendEmail.ts): `src/utils/email/sendEmail.ts`
- [OTP Generation](https://github.com/1blixen/support-tickets-system/blob/main/src/utils/email/otp.ts): `src/utils/email/otp.ts`
- [Email Template](https://github.com/1blixen/support-tickets-system/blob/main/src/utils/email/template.ts): `src/utils/email/template.ts`
- [Success Response](https://github.com/1blixen/support-tickets-system/blob/main/src/utils/succesRes.ts): `src/utils/succesRes.ts`
- [Password Hashing](https://github.com/1blixen/support-tickets-system/blob/main/src/utils/security/hash.ts): `src/utils/security/hash.ts`

### Other components

- **API Client**

## Connections

- Server Bootstrap → MongoDB Connection: imports connection (evidence: `src/bootstrap.ts`)
- Server Bootstrap → Redis Connection: imports connection (evidence: `src/bootstrap.ts`)
- Server Bootstrap → Auth Routes: loads routes (evidence: `src/bootstrap.ts`)
- Server Bootstrap → Ticket Routes: loads routes (evidence: `src/bootstrap.ts`)
- Server Bootstrap → Comment Routes: loads routes (evidence: `src/bootstrap.ts`)
- Server Bootstrap → Employee Routes: loads routes (evidence: `src/bootstrap.ts`)
- API Client → Ticket Routes: sends requests
- Ticket Routes → Ticket Operations: calls (evidence: `src/modules/tickets/ticket.controller.ts`)
- Comment Routes → Comment Operations: calls (evidence: `src/modules/comments/comment.controller.ts`)
- Employee Routes → Employee Management: calls (evidence: `src/modules/users/employees/employee.controller.ts`)
- Ticket Operations → Ticket Records: reads and writes (evidence: `src/modules/tickets/ticket.services.ts`)
- Ticket Operations → User Records: looks up assignee (evidence: `src/modules/tickets/ticket.services.ts`)
- Comment Operations → Ticket Records: references ticket (evidence: `src/modules/comments/comment.services.ts`)
- Comment Operations → Comment Records: reads and writes (evidence: `src/modules/comments/comment.services.ts`)
- Employee Management → User Records: manages users (evidence: `src/modules/users/employees/employee.services.ts`)
- Auth Routes → Authentication: calls (evidence: `src/modules/auth/auth.controller.ts`)
- Authentication → User Records: reads and creates (evidence: `src/modules/auth/auth.services.ts`)
- Authentication → Password Hashing: hashes password (evidence: `src/modules/auth/auth.services.ts`)
- Authentication → OTP Generation: creates OTP (evidence: `src/modules/auth/auth.services.ts`)
- Authentication → Email Delivery: sends email (evidence: `src/modules/auth/auth.services.ts`)
- Authentication → Email Template: renders email (evidence: `src/modules/auth/auth.services.ts`)
- Authentication → Redis Connection: stores OTP and ID (evidence: `src/modules/auth/auth.services.ts`)
- Authentication → Redis Keys: uses key helpers (evidence: `src/modules/auth/auth.services.ts`)
- Authentication → Token Utilities: issues tokens (evidence: `src/modules/auth/auth.services.ts`)
- Token Authentication → Token Utilities: decodes token (evidence: `src/middlewares/auth.middleware.ts`)
- Ticket Routes → Token Authentication: authenticates requests (evidence: `src/modules/tickets/ticket.controller.ts`)
- Comment Routes → Token Authentication: authenticates requests (evidence: `src/modules/comments/comment.controller.ts`)
- Employee Routes → Token Authentication: authenticates requests (evidence: `src/modules/users/employees/employee.controller.ts`)
- Ticket Routes → Request Validation: validates input (evidence: `src/modules/tickets/ticket.controller.ts`)
- Comment Routes → Request Validation: validates input (evidence: `src/modules/comments/comment.controller.ts`)
- Employee Routes → Request Validation: validates input (evidence: `src/modules/users/employees/employee.controller.ts`)
- Ticket Routes → Success Response: formats response (evidence: `src/modules/tickets/ticket.controller.ts`)
- Comment Routes → Success Response: formats response (evidence: `src/modules/comments/comment.controller.ts`)
- Employee Routes → Success Response: formats response (evidence: `src/modules/users/employees/employee.controller.ts`)
