# shinusei/helpdesk architecture

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

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

## Overview

HelpDesk is a role-aware ticketing application. Users create and browse tickets, then view ticket details to track status, comment, and manage attachments; support staff take and resolve assigned work. Administrators also review dashboard statistics, manage users, and configure priority weights and dynamic ticket fields. The Svelte client calls a Spring REST API, with ticket business logic represented by TicketService and persistence by JPA repositories. The README is empty and most backend implementation files were not sampled, so backend links reflect the evident module boundaries; uncertain internal calls are omitted.

Main entry points: [`frontend/src/lib/api.js`](https://github.com/shinusei/helpdesk/blob/master/frontend/src/lib/api.js) (API client), [`frontend/src/App.svelte`](https://github.com/shinusei/helpdesk/blob/master/frontend/src/App.svelte) (App and routes), [`src/main/java/com/example/helpdesk/repository/TicketRepository.java`](https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/repository/TicketRepository.java) (Ticket repositories), [`src/main/java/com/example/helpdesk/domain/User.java`](https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/domain/User.java) (User records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_app["App and routes<br/>[App.svelte]"]
  node_ticketcreate["Create ticket"]
  node_ticketlist["Ticket list<br/>[TicketList.svelte]"]
  node_ticketdetail["Ticket detail"]
  node_dashboard["Dashboard<br/>[Dashboard.svelte]"]
  node_priorityui["Priority settings"]
  node_useradminui["User administration<br/>[UserList.svelte]"]
  node_api["API client<br/>[api.js]"]
  node_login["Login page<br/>[Login.svelte]"]
  node_assigned["Support work queue"]
end

subgraph group_tickets["Ticket operations"]
  node_ticketapi["Ticket API"]
  node_ticketservice["Ticket service<br/>[TicketService.java]"]
end

subgraph group_admin["Administration"]
  node_adminapi["Admin endpoints"]
  node_dashboardapi["Dashboard endpoint"]
  node_priorityapi["Priority endpoint"]
  node_userapi["User endpoint"]
end

subgraph group_core["Backend core"]
  node_priorityservice["Priority services"]
  node_userservice["User service<br/>[UserService.java]"]
  node_security["Authentication and roles"]
end

subgraph group_storage["Persistence"]
  node_ticketdata["Ticket repositories"]
  node_ticketmodels["Ticket records<br/>[Ticket.java]"]
  node_userrecords["User records<br/>[User.java]"]
  node_database[("Relational database")]
end

node_user(("End user"))

node_user -->|"uses"| node_app
node_app -->|"shows"| node_login
node_app -->|"routes"| node_ticketcreate
node_app -->|"routes"| node_ticketlist
node_app -->|"routes"| node_ticketdetail
node_app -->|"routes"| node_dashboard
node_app -->|"routes"| node_priorityui
node_app -->|"routes"| node_useradminui
node_app -->|"routes"| node_assigned
node_ticketcreate -->|"submits and uploads"| node_api
node_ticketlist -->|"requests tickets"| node_api
node_ticketdetail -->|"reads and updates"| node_api
node_dashboard -->|"requests statistics"| node_api
node_priorityui -->|"manages settings"| node_api
node_useradminui -->|"manages users"| node_api
node_assigned -->|"requests assignments"| node_api
node_api -->|"calls ticket routes"| node_ticketapi
node_api -->|"calls admin routes"| node_adminapi
node_api -->|"requests dashboard"| node_dashboardapi
node_api -->|"requests priority"| node_priorityapi
node_api -->|"requests users"| node_userapi
node_ticketapi -->|"delegates ticket work"| node_ticketservice
node_ticketservice -->|"persists ticket data"| node_ticketdata
node_ticketdata -->|"maps records"| node_ticketmodels
node_ticketdata -->|"reads and writes"| node_database
node_dashboardapi -->|"summarizes tickets"| node_ticketdata
node_priorityapi -->|"manages weights"| node_priorityservice
node_userapi -->|"manages accounts"| node_userservice
node_userservice -->|"uses user records"| node_userrecords
node_security -->|"authenticates users"| node_userrecords
node_userrecords -->|"persists users"| node_database

click node_app "https://github.com/shinusei/helpdesk/blob/master/frontend/src/App.svelte"
click node_ticketcreate "https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/TicketCreate.svelte"
click node_ticketlist "https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/TicketList.svelte"
click node_ticketdetail "https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/TicketDetail.svelte"
click node_dashboard "https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/Dashboard.svelte"
click node_priorityui "https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/PrioritySettings.svelte"
click node_useradminui "https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/UserList.svelte"
click node_api "https://github.com/shinusei/helpdesk/blob/master/frontend/src/lib/api.js"
click node_ticketapi "https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/controller/TicketRestController.java"
click node_ticketservice "https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/service/TicketService.java"
click node_ticketdata "https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/repository/TicketRepository.java"
click node_ticketmodels "https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/domain/Ticket.java"
click node_adminapi "https://github.com/shinusei/helpdesk/tree/master/src/main/java/com/example/helpdesk/controller/admin"
click node_dashboardapi "https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/controller/admin/DashboardRestController.java"
click node_priorityapi "https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/controller/admin/PriorityRestController.java"
click node_userapi "https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/controller/admin/UserAdminRestController.java"
click node_priorityservice "https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/service/PriorityWeightService.java"
click node_userservice "https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/service/UserService.java"
click node_userrecords "https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/domain/User.java"
click node_database "https://github.com/shinusei/helpdesk/blob/master/src/main/resources/application.properties"
click node_security "https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/config/SecurityConfig.java"
click node_login "https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/Login.svelte"
click node_assigned "https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/SupportTakenTickets.svelte"

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_ticketcreate,node_ticketlist,node_ticketdetail,node_dashboard,node_priorityui,node_useradminui,node_api,node_login,node_assigned,node_user toneBlue
class node_ticketapi,node_ticketservice toneAmber
class node_adminapi,node_dashboardapi,node_priorityapi,node_userapi toneMint
class node_priorityservice,node_userservice,node_security toneRose
class node_ticketdata,node_ticketmodels,node_userrecords,node_database toneIndigo
```

## Components

### Web client

- [App and routes](https://github.com/shinusei/helpdesk/blob/master/frontend/src/App.svelte): `frontend/src/App.svelte`
- [Create ticket](https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/TicketCreate.svelte): `frontend/src/pages/TicketCreate.svelte`
- [Ticket list](https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/TicketList.svelte): `frontend/src/pages/TicketList.svelte`
- [Ticket detail](https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/TicketDetail.svelte): `frontend/src/pages/TicketDetail.svelte`
- [Dashboard](https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/Dashboard.svelte): `frontend/src/pages/Dashboard.svelte`
- [Priority settings](https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/PrioritySettings.svelte): `frontend/src/pages/PrioritySettings.svelte`
- [User administration](https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/UserList.svelte): `frontend/src/pages/UserList.svelte`
- [API client](https://github.com/shinusei/helpdesk/blob/master/frontend/src/lib/api.js): `frontend/src/lib/api.js`
- [Login page](https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/Login.svelte): `frontend/src/pages/Login.svelte`
- [Support work queue](https://github.com/shinusei/helpdesk/blob/master/frontend/src/pages/SupportTakenTickets.svelte): `frontend/src/pages/SupportTakenTickets.svelte`

### Ticket operations

- [Ticket API](https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/controller/TicketRestController.java): `src/main/java/com/example/helpdesk/controller/TicketRestController.java`
- [Ticket service](https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/service/TicketService.java): `src/main/java/com/example/helpdesk/service/TicketService.java`

### Administration

- [Admin endpoints](https://github.com/shinusei/helpdesk/tree/master/src/main/java/com/example/helpdesk/controller/admin): `src/main/java/com/example/helpdesk/controller/admin`
- [Dashboard endpoint](https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/controller/admin/DashboardRestController.java): `src/main/java/com/example/helpdesk/controller/admin/DashboardRestController.java`
- [Priority endpoint](https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/controller/admin/PriorityRestController.java): `src/main/java/com/example/helpdesk/controller/admin/PriorityRestController.java`
- [User endpoint](https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/controller/admin/UserAdminRestController.java): `src/main/java/com/example/helpdesk/controller/admin/UserAdminRestController.java`

### Backend core

- [Priority services](https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/service/PriorityWeightService.java): `src/main/java/com/example/helpdesk/service/PriorityWeightService.java`
- [User service](https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/service/UserService.java): `src/main/java/com/example/helpdesk/service/UserService.java`
- [Authentication and roles](https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/config/SecurityConfig.java): `src/main/java/com/example/helpdesk/config/SecurityConfig.java`

### Persistence

- [Ticket repositories](https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/repository/TicketRepository.java): `src/main/java/com/example/helpdesk/repository/TicketRepository.java`
- [Ticket records](https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/domain/Ticket.java): `src/main/java/com/example/helpdesk/domain/Ticket.java`
- [User records](https://github.com/shinusei/helpdesk/blob/master/src/main/java/com/example/helpdesk/domain/User.java): `src/main/java/com/example/helpdesk/domain/User.java`
- [Relational database](https://github.com/shinusei/helpdesk/blob/master/src/main/resources/application.properties): `src/main/resources/application.properties`

### Other components

- **End user**

## Connections

- End user → App and routes: uses
- App and routes → Login page: shows
- App and routes → Create ticket: routes
- App and routes → Ticket list: routes
- App and routes → Ticket detail: routes
- App and routes → Dashboard: routes
- App and routes → Priority settings: routes
- App and routes → User administration: routes
- App and routes → Support work queue: routes
- Create ticket → API client: submits and uploads
- Ticket list → API client: requests tickets
- Ticket detail → API client: reads and updates
- Dashboard → API client: requests statistics
- Priority settings → API client: manages settings
- User administration → API client: manages users
- Support work queue → API client: requests assignments
- API client → Ticket API: calls ticket routes
- API client → Admin endpoints: calls admin routes
- API client → Dashboard endpoint: requests dashboard
- API client → Priority endpoint: requests priority
- API client → User endpoint: requests users
- Ticket API → Ticket service: delegates ticket work
- Ticket service → Ticket repositories: persists ticket data
- Ticket repositories → Ticket records: maps records
- Ticket repositories → Relational database: reads and writes
- Dashboard endpoint → Ticket repositories: summarizes tickets
- Priority endpoint → Priority services: manages weights
- User endpoint → User service: manages accounts
- User service → User records: uses user records
- Authentication and roles → User records: authenticates users
- User records → Relational database: persists users
