# saineshwar/vueticket-servicedesk architecture

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

- Interactive diagram: https://gitdiagram.com/saineshwar/vueticket-servicedesk
- Repository: https://github.com/saineshwar/vueticket-servicedesk

## Overview

VueTicket is a self-hosted service-management application: requesters and support staff use a React portal backed by an ASP.NET Core API and SQL Server, with a separately hosted worker for assignment, SLA, escalation, and housekeeping. The primary workflow is submitting and working a ticket, with access control and service-desk configuration shaping who can see and handle it. The README documents notifications, attachments, dashboards, and administration. Several backend service-to-store and API-to-service links were not shown, so those relationships are omitted rather than inferred.

Main entry points: [`backend/src/TicketCore.Api/Program.cs`](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Api/Program.cs) (HTTP API host), [`frontend/src/api/endpoints.ts`](https://github.com/saineshwar/vueticket-servicedesk/blob/main/frontend/src/api/endpoints.ts) (API endpoint client), [`frontend/src/app/App.tsx`](https://github.com/saineshwar/vueticket-servicedesk/blob/main/frontend/src/app/App.tsx) (Portal routing), [`backend/src/TicketCore.Engine/EngineHosting.cs`](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Engine/EngineHosting.cs) (Engine task hosting)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_portal["Web portal"]
  node_app["Portal routing<br/>[App.tsx]"]
  node_ticket_ui["Ticket workspace"]
  node_home_ui["Home dashboard<br/>[HomePage.tsx]"]
  node_admin_ui["Administration screens"]
  node_auth_ui["Sign-in and setup<br/>[AuthProvider.tsx]"]
  node_api_client["API endpoint client<br/>[endpoints.ts]"]
end

subgraph group_api["API and domain"]
  node_api_host["HTTP API host<br/>[Program.cs]"]
  node_auth["Authentication<br/>[AuthService.cs]"]
  node_access["Roles and permissions<br/>[RoleService.cs]"]
  node_org["Organization tree<br/>[OrgUnitService.cs]"]
  node_desks["Service desks"]
  node_tickets["Ticket operations<br/>[TicketService.cs]"]
  node_dashboard["Dashboard queries"]
  node_sla_config["SLA configuration"]
end

subgraph group_data["Persistence"]
  node_data_layer["Data access<br/>[TicketDbContext.cs]"]
  node_database[("SQL Server")]
end

subgraph group_engine["Automation worker"]
  node_worker["Worker host<br/>[Program.cs]"]
  node_engine_host["Engine task hosting<br/>[EngineHosting.cs]"]
  node_sla_engine["SLA and escalation<br/>[SlaMonitor.cs]"]
  node_assignment["Ticket assignment"]
  node_engine_store["Engine data store<br/>[EngineStore.cs]"]
end

subgraph group_integrations["Delivery services"]
  node_notifier["Ticket notifications<br/>[TicketNotifier.cs]"]
  node_email["Email delivery<br/>[EmailDelivery.cs]"]
  node_file_storage["Attachment storage<br/>[FileStorage.cs]"]
end

node_requester(("Requester or agent"))

node_requester -->|"uses"| node_app
node_app -->|"routes to"| node_auth_ui
node_app -->|"routes to"| node_home_ui
node_app -->|"routes to"| node_ticket_ui
node_ticket_ui -->|"requests data"| node_api_client
node_home_ui -->|"requests data"| node_api_client
node_admin_ui -->|"requests data"| node_api_client
node_auth_ui -->|"authenticates through"| node_api_client
node_api_client -->|"calls"| node_api_host
node_api_host -.->|"handles sign-in"| node_auth
node_api_host -.->|"checks access"| node_access
node_api_host -.->|"serves organization"| node_org
node_api_host -.->|"serves configuration"| node_desks
node_api_host -.->|"handles tickets"| node_tickets
node_api_host -.->|"serves dashboard"| node_dashboard
node_api_host -.->|"serves SLA setup"| node_sla_config
node_tickets -.->|"stores attachments"| node_file_storage
node_tickets -.->|"triggers notices"| node_notifier
node_notifier -.->|"queues email"| node_email
node_worker -->|"starts tasks"| node_engine_host
node_engine_host -->|"runs"| node_sla_engine
node_engine_host -->|"runs"| node_assignment
node_sla_engine -->|"reads and writes"| node_engine_store
node_assignment -->|"assigns tickets"| node_engine_store
node_engine_host -->|"records runs"| node_engine_store
node_data_layer -.->|"persists data"| node_database
node_engine_store -->|"reads and writes"| node_database

click node_app "https://github.com/saineshwar/vueticket-servicedesk/blob/main/frontend/src/app/App.tsx"
click node_ticket_ui "https://github.com/saineshwar/vueticket-servicedesk/blob/main/frontend/src/features/tickets/TicketDetailPage.tsx"
click node_home_ui "https://github.com/saineshwar/vueticket-servicedesk/blob/main/frontend/src/features/home/HomePage.tsx"
click node_admin_ui "https://github.com/saineshwar/vueticket-servicedesk/blob/main/frontend/src/features/admin/desks/ServiceDesksPage.tsx"
click node_auth_ui "https://github.com/saineshwar/vueticket-servicedesk/blob/main/frontend/src/auth/AuthProvider.tsx"
click node_api_client "https://github.com/saineshwar/vueticket-servicedesk/blob/main/frontend/src/api/endpoints.ts"
click node_api_host "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Api/Program.cs"
click node_auth "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/Auth/AuthService.cs"
click node_access "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/Access/RoleService.cs"
click node_org "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/Organization/OrgUnitService.cs"
click node_desks "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/ServiceDesks/ServiceDeskService.cs"
click node_tickets "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/Tickets/TicketService.cs"
click node_dashboard "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/Dashboard/DashboardService.cs"
click node_sla_config "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/Sla/SlaConfigService.cs"
click node_data_layer "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Data/TicketDbContext.cs"
click node_worker "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Worker/Program.cs"
click node_engine_host "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Engine/EngineHosting.cs"
click node_sla_engine "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Engine/Sla/SlaMonitor.cs"
click node_assignment "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Engine/Assignment/AssignmentEngine.cs"
click node_engine_store "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Data/Engine/EngineStore.cs"
click node_notifier "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/Notifications/TicketNotifier.cs"
click node_email "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Services/Email/EmailDelivery.cs"
click node_file_storage "https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Services/Storage/FileStorage.cs"

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_app,node_ticket_ui,node_home_ui,node_admin_ui,node_auth_ui,node_api_client toneBlue
class node_api_host,node_auth,node_access,node_org,node_desks,node_tickets,node_dashboard,node_sla_config toneAmber
class node_data_layer,node_database,node_requester toneMint
class node_worker,node_engine_host,node_sla_engine,node_assignment,node_engine_store toneRose
class node_notifier,node_email,node_file_storage toneIndigo
```

## Components

### Web portal

- [Portal routing](https://github.com/saineshwar/vueticket-servicedesk/blob/main/frontend/src/app/App.tsx): `frontend/src/app/App.tsx`
- [Ticket workspace](https://github.com/saineshwar/vueticket-servicedesk/blob/main/frontend/src/features/tickets/TicketDetailPage.tsx): `frontend/src/features/tickets/TicketDetailPage.tsx`
- [Home dashboard](https://github.com/saineshwar/vueticket-servicedesk/blob/main/frontend/src/features/home/HomePage.tsx): `frontend/src/features/home/HomePage.tsx`
- [Administration screens](https://github.com/saineshwar/vueticket-servicedesk/blob/main/frontend/src/features/admin/desks/ServiceDesksPage.tsx): `frontend/src/features/admin/desks/ServiceDesksPage.tsx`
- [Sign-in and setup](https://github.com/saineshwar/vueticket-servicedesk/blob/main/frontend/src/auth/AuthProvider.tsx): `frontend/src/auth/AuthProvider.tsx`
- [API endpoint client](https://github.com/saineshwar/vueticket-servicedesk/blob/main/frontend/src/api/endpoints.ts): `frontend/src/api/endpoints.ts`

### API and domain

- [HTTP API host](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Api/Program.cs): `backend/src/TicketCore.Api/Program.cs`
- [Authentication](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/Auth/AuthService.cs): `backend/src/TicketCore.Core/Auth/AuthService.cs`
- [Roles and permissions](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/Access/RoleService.cs): `backend/src/TicketCore.Core/Access/RoleService.cs`
- [Organization tree](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/Organization/OrgUnitService.cs): `backend/src/TicketCore.Core/Organization/OrgUnitService.cs`
- [Service desks](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/ServiceDesks/ServiceDeskService.cs): `backend/src/TicketCore.Core/ServiceDesks/ServiceDeskService.cs`
- [Ticket operations](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/Tickets/TicketService.cs): `backend/src/TicketCore.Core/Tickets/TicketService.cs`
- [Dashboard queries](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/Dashboard/DashboardService.cs): `backend/src/TicketCore.Core/Dashboard/DashboardService.cs`
- [SLA configuration](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/Sla/SlaConfigService.cs): `backend/src/TicketCore.Core/Sla/SlaConfigService.cs`

### Persistence

- [Data access](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Data/TicketDbContext.cs): `backend/src/TicketCore.Data/TicketDbContext.cs`
- **SQL Server**

### Automation worker

- [Worker host](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Worker/Program.cs): `backend/src/TicketCore.Worker/Program.cs`
- [Engine task hosting](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Engine/EngineHosting.cs): `backend/src/TicketCore.Engine/EngineHosting.cs`
- [SLA and escalation](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Engine/Sla/SlaMonitor.cs): `backend/src/TicketCore.Engine/Sla/SlaMonitor.cs`
- [Ticket assignment](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Engine/Assignment/AssignmentEngine.cs): `backend/src/TicketCore.Engine/Assignment/AssignmentEngine.cs`
- [Engine data store](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Data/Engine/EngineStore.cs): `backend/src/TicketCore.Data/Engine/EngineStore.cs`

### Delivery services

- [Ticket notifications](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Core/Notifications/TicketNotifier.cs): `backend/src/TicketCore.Core/Notifications/TicketNotifier.cs`
- [Email delivery](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Services/Email/EmailDelivery.cs): `backend/src/TicketCore.Services/Email/EmailDelivery.cs`
- [Attachment storage](https://github.com/saineshwar/vueticket-servicedesk/blob/main/backend/src/TicketCore.Services/Storage/FileStorage.cs): `backend/src/TicketCore.Services/Storage/FileStorage.cs`

### Other components

- **Requester or agent**

## Connections

- Requester or agent → Portal routing: uses
- Portal routing → Sign-in and setup: routes to (evidence: `frontend/src/app/App.tsx`)
- Portal routing → Home dashboard: routes to (evidence: `frontend/src/app/App.tsx`)
- Portal routing → Ticket workspace: routes to (evidence: `frontend/src/app/App.tsx`)
- Ticket workspace → API endpoint client: requests data (evidence: `frontend/src/features/tickets/TicketDetailPage.tsx`)
- Home dashboard → API endpoint client: requests data (evidence: `frontend/src/features/home/HomePage.tsx`)
- Administration screens → API endpoint client: requests data (evidence: `frontend/src/features/admin/desks/ServiceDesksPage.tsx`)
- Sign-in and setup → API endpoint client: authenticates through (evidence: `frontend/src/auth/AuthProvider.tsx`)
- API endpoint client → HTTP API host: calls (evidence: `frontend/src/api/endpoints.ts`)
- HTTP API host → Authentication: handles sign-in
- HTTP API host → Roles and permissions: checks access
- HTTP API host → Organization tree: serves organization
- HTTP API host → Service desks: serves configuration
- HTTP API host → Ticket operations: handles tickets
- HTTP API host → Dashboard queries: serves dashboard
- HTTP API host → SLA configuration: serves SLA setup
- Ticket operations → Attachment storage: stores attachments
- Ticket operations → Ticket notifications: triggers notices
- Ticket notifications → Email delivery: queues email
- Worker host → Engine task hosting: starts tasks (evidence: `backend/src/TicketCore.Engine/EngineHosting.cs`)
- Engine task hosting → SLA and escalation: runs (evidence: `backend/src/TicketCore.Engine/EngineHosting.cs`)
- Engine task hosting → Ticket assignment: runs (evidence: `backend/src/TicketCore.Engine/EngineHosting.cs`)
- SLA and escalation → Engine data store: reads and writes (evidence: `backend/src/TicketCore.Engine/EngineHosting.cs`)
- Ticket assignment → Engine data store: assigns tickets (evidence: `backend/src/TicketCore.Engine/Assignment/AssignmentEngine.cs`)
- Engine task hosting → Engine data store: records runs (evidence: `backend/src/TicketCore.Engine/EngineHosting.cs`)
- Data access → SQL Server: persists data
- Engine data store → SQL Server: reads and writes (evidence: `backend/src/TicketCore.Data/Engine/EngineStore.cs`)
