# bokbokforthewin/techdesk architecture

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

- Interactive diagram: https://gitdiagram.com/bokbokforthewin/techdesk
- Repository: https://github.com/bokbokforthewin/techdesk

## Overview

This is an ICT assistance-request system for technical and repair work: users sign in, submit requests with scheduling preferences and optional photos, ICTU staff review and schedule or reassign them, work is tracked through messaging, and completion leads to a customer satisfaction form. The dashboard monitors pending, active, and completed work; subject options are managed separately. Edges reflect the shown API routing, controller/model calls, and sampled client wiring; some client-to-API calls are represented only where the route and screen responsibilities are documented or visible.

Main entry points: [`backend/routes/api.php`](https://github.com/bokbokforthewin/techdesk/blob/master/backend/routes/api.php) (API routes), [`client/src/App.jsx`](https://github.com/bokbokforthewin/techdesk/blob/master/client/src/App.jsx) (App routing), [`backend/app/Http/Controllers/AssistanceRequestController.php`](https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Http/Controllers/AssistanceRequestController.php) (Request workflow API), [`backend/app/Models/AssistanceRequest.php`](https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Models/AssistanceRequest.php) (Assistance request)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_app["App routing<br/>[App.jsx]"]
  node_login["Sign in<br/>[Login.jsx]"]
  node_dashboard["Live dashboard<br/>[Dashboard.jsx]"]
  node_tech["Technical requests"]
  node_repair["Repair requests"]
  node_form["Request form<br/>[RequestForm.jsx]"]
  node_details["Request details"]
  node_actions["Workflow actions"]
  node_messaging["Request messaging<br/>[Messaging.jsx]"]
  node_csf["Satisfaction form"]
  node_subjectsui["Subject management<br/>[ManageSubjects.jsx]"]
end

subgraph group_api["API and workflow"]
  node_routes["API routes<br/>[api.php]"]
  node_requestctl["Request workflow API"]
  node_dashctl["Dashboard API"]
end

subgraph group_domain["Request domain"]
  node_request[("Assistance request")]
  node_userrecord[("User account<br/>[User.php]")]
  node_attachment[("Request attachments")]
  node_message[("Request messages<br/>[Message.php]")]
  node_completion[("Completion form")]
end

subgraph group_support["Access and catalog"]
  node_auth["Authentication<br/>[AuthController.php]"]
  node_subjectctl["Subject API"]
  node_subject[("Subject options<br/>[Subject.php]")]
end

node_user(("End user / ICTU"))

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_login
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_tech
node_app -->|"routes to"| node_repair
node_app -->|"routes to"| node_subjectsui
node_tech -->|"renders"| node_form
node_repair -->|"renders"| node_form
node_tech -->|"renders"| node_details
node_repair -->|"renders"| node_messaging
node_details -->|"renders"| node_actions
node_details -->|"renders"| node_messaging
node_user -->|"signs in"| node_login
node_login -.->|"submits credentials"| node_routes
node_dashboard -.->|"loads summary"| node_routes
node_form -.->|"submits request"| node_routes
node_actions -.->|"sends transitions"| node_routes
node_messaging -.->|"exchanges messages"| node_routes
node_csf -.->|"submits evaluation"| node_routes
node_subjectsui -.->|"manages options"| node_routes
node_routes -->|"dispatches auth"| node_auth
node_routes -->|"dispatches requests"| node_requestctl
node_routes -->|"dispatches summary"| node_dashctl
node_routes -->|"dispatches subjects"| node_subjectctl
node_auth -->|"reads / issues token"| node_userrecord
node_requestctl -->|"creates and updates"| node_request
node_requestctl -->|"reads personnel"| node_userrecord
node_requestctl -->|"creates / loads"| node_attachment
node_requestctl -->|"reads / creates"| node_message
node_requestctl -->|"creates form"| node_completion
node_dashctl -->|"queries work"| node_request
node_subjectctl -->|"reads / updates"| node_subject
node_request -->|"relates users"| node_userrecord
node_request -->|"has many"| node_attachment
node_request -->|"has many"| node_message

click node_app "https://github.com/bokbokforthewin/techdesk/blob/master/client/src/App.jsx"
click node_login "https://github.com/bokbokforthewin/techdesk/blob/master/client/src/pages/Login.jsx"
click node_dashboard "https://github.com/bokbokforthewin/techdesk/blob/master/client/src/pages/Dashboard.jsx"
click node_tech "https://github.com/bokbokforthewin/techdesk/blob/master/client/src/pages/TechnicalAssistance.jsx"
click node_repair "https://github.com/bokbokforthewin/techdesk/blob/master/client/src/pages/RepairAssistance.jsx"
click node_form "https://github.com/bokbokforthewin/techdesk/blob/master/client/src/components/requests/RequestForm.jsx"
click node_details "https://github.com/bokbokforthewin/techdesk/blob/master/client/src/components/requests/RequestDetailsModal.jsx"
click node_actions "https://github.com/bokbokforthewin/techdesk/blob/master/client/src/components/requests/RequestActionDialog.jsx"
click node_messaging "https://github.com/bokbokforthewin/techdesk/blob/master/client/src/components/requests/Messaging.jsx"
click node_csf "https://github.com/bokbokforthewin/techdesk/blob/master/client/src/components/requests/CsfSubmissionModal.jsx"
click node_subjectsui "https://github.com/bokbokforthewin/techdesk/blob/master/client/src/pages/ManageSubjects.jsx"
click node_routes "https://github.com/bokbokforthewin/techdesk/blob/master/backend/routes/api.php"
click node_auth "https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Http/Controllers/AuthController.php"
click node_requestctl "https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Http/Controllers/AssistanceRequestController.php"
click node_dashctl "https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Http/Controllers/DashboardController.php"
click node_subjectctl "https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Http/Controllers/SubjectController.php"
click node_request "https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Models/AssistanceRequest.php"
click node_userrecord "https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Models/User.php"
click node_attachment "https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Models/RequestAttachment.php"
click node_message "https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Models/Message.php"
click node_completion "https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Models/AssistanceCompletionForm.php"
click node_subject "https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Models/Subject.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_app,node_login,node_dashboard,node_tech,node_repair,node_form,node_details,node_actions,node_messaging,node_csf,node_subjectsui,node_user toneBlue
class node_routes,node_requestctl,node_dashctl toneAmber
class node_request,node_userrecord,node_attachment,node_message,node_completion toneMint
class node_auth,node_subjectctl,node_subject toneRose
```

## Components

### Web application

- [App routing](https://github.com/bokbokforthewin/techdesk/blob/master/client/src/App.jsx): `client/src/App.jsx`
- [Sign in](https://github.com/bokbokforthewin/techdesk/blob/master/client/src/pages/Login.jsx): `client/src/pages/Login.jsx`
- [Live dashboard](https://github.com/bokbokforthewin/techdesk/blob/master/client/src/pages/Dashboard.jsx): `client/src/pages/Dashboard.jsx`
- [Technical requests](https://github.com/bokbokforthewin/techdesk/blob/master/client/src/pages/TechnicalAssistance.jsx): `client/src/pages/TechnicalAssistance.jsx`
- [Repair requests](https://github.com/bokbokforthewin/techdesk/blob/master/client/src/pages/RepairAssistance.jsx): `client/src/pages/RepairAssistance.jsx`
- [Request form](https://github.com/bokbokforthewin/techdesk/blob/master/client/src/components/requests/RequestForm.jsx): `client/src/components/requests/RequestForm.jsx`
- [Request details](https://github.com/bokbokforthewin/techdesk/blob/master/client/src/components/requests/RequestDetailsModal.jsx): `client/src/components/requests/RequestDetailsModal.jsx`
- [Workflow actions](https://github.com/bokbokforthewin/techdesk/blob/master/client/src/components/requests/RequestActionDialog.jsx): `client/src/components/requests/RequestActionDialog.jsx`
- [Request messaging](https://github.com/bokbokforthewin/techdesk/blob/master/client/src/components/requests/Messaging.jsx): `client/src/components/requests/Messaging.jsx`
- [Satisfaction form](https://github.com/bokbokforthewin/techdesk/blob/master/client/src/components/requests/CsfSubmissionModal.jsx): `client/src/components/requests/CsfSubmissionModal.jsx`
- [Subject management](https://github.com/bokbokforthewin/techdesk/blob/master/client/src/pages/ManageSubjects.jsx): `client/src/pages/ManageSubjects.jsx`

### API and workflow

- [API routes](https://github.com/bokbokforthewin/techdesk/blob/master/backend/routes/api.php): `backend/routes/api.php`
- [Request workflow API](https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Http/Controllers/AssistanceRequestController.php): `backend/app/Http/Controllers/AssistanceRequestController.php`
- [Dashboard API](https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Http/Controllers/DashboardController.php): `backend/app/Http/Controllers/DashboardController.php`

### Request domain

- [Assistance request](https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Models/AssistanceRequest.php): `backend/app/Models/AssistanceRequest.php`
- [User account](https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Models/User.php): `backend/app/Models/User.php`
- [Request attachments](https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Models/RequestAttachment.php): `backend/app/Models/RequestAttachment.php`
- [Request messages](https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Models/Message.php): `backend/app/Models/Message.php`
- [Completion form](https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Models/AssistanceCompletionForm.php): `backend/app/Models/AssistanceCompletionForm.php`

### Access and catalog

- [Authentication](https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Http/Controllers/AuthController.php): `backend/app/Http/Controllers/AuthController.php`
- [Subject API](https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Http/Controllers/SubjectController.php): `backend/app/Http/Controllers/SubjectController.php`
- [Subject options](https://github.com/bokbokforthewin/techdesk/blob/master/backend/app/Models/Subject.php): `backend/app/Models/Subject.php`

### Other components

- **End user / ICTU**

## Connections

- End user / ICTU → App routing: uses (evidence: `client/src/App.jsx`)
- App routing → Sign in: routes to (evidence: `client/src/App.jsx`)
- App routing → Live dashboard: routes to (evidence: `client/src/App.jsx`)
- App routing → Technical requests: routes to (evidence: `client/src/App.jsx`)
- App routing → Repair requests: routes to (evidence: `client/src/App.jsx`)
- App routing → Subject management: routes to (evidence: `client/src/App.jsx`)
- Technical requests → Request form: renders (evidence: `client/src/pages/TechnicalAssistance.jsx`)
- Repair requests → Request form: renders (evidence: `client/src/pages/RepairAssistance.jsx`)
- Technical requests → Request details: renders (evidence: `client/src/pages/TechnicalAssistance.jsx`)
- Repair requests → Request messaging: renders (evidence: `client/src/pages/RepairAssistance.jsx`)
- Request details → Workflow actions: renders (evidence: `client/src/components/requests/RequestDetailsModal.jsx`)
- Request details → Request messaging: renders (evidence: `client/src/components/requests/RequestDetailsModal.jsx`)
- End user / ICTU → Sign in: signs in
- Sign in → API routes: submits credentials
- Live dashboard → API routes: loads summary
- Request form → API routes: submits request
- Workflow actions → API routes: sends transitions
- Request messaging → API routes: exchanges messages
- Satisfaction form → API routes: submits evaluation
- Subject management → API routes: manages options
- API routes → Authentication: dispatches auth (evidence: `backend/routes/api.php`)
- API routes → Request workflow API: dispatches requests (evidence: `backend/routes/api.php`)
- API routes → Dashboard API: dispatches summary (evidence: `backend/routes/api.php`)
- API routes → Subject API: dispatches subjects (evidence: `backend/routes/api.php`)
- Authentication → User account: reads / issues token (evidence: `backend/app/Http/Controllers/AuthController.php`)
- Request workflow API → Assistance request: creates and updates (evidence: `backend/app/Http/Controllers/AssistanceRequestController.php`)
- Request workflow API → User account: reads personnel (evidence: `backend/app/Http/Controllers/AssistanceRequestController.php`)
- Request workflow API → Request attachments: creates / loads (evidence: `backend/app/Http/Controllers/AssistanceRequestController.php`)
- Request workflow API → Request messages: reads / creates (evidence: `backend/app/Http/Controllers/AssistanceRequestController.php`)
- Request workflow API → Completion form: creates form (evidence: `backend/app/Http/Controllers/AssistanceRequestController.php`)
- Dashboard API → Assistance request: queries work (evidence: `backend/app/Http/Controllers/DashboardController.php`)
- Subject API → Subject options: reads / updates (evidence: `backend/app/Http/Controllers/SubjectController.php`)
- Assistance request → User account: relates users (evidence: `backend/app/Models/AssistanceRequest.php`)
- Assistance request → Request attachments: has many (evidence: `backend/app/Models/AssistanceRequest.php`)
- Assistance request → Request messages: has many (evidence: `backend/app/Models/AssistanceRequest.php`)
