# aldousroga/deskflow architecture

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

- Interactive diagram: https://gitdiagram.com/aldousroga/deskflow
- Repository: https://github.com/aldousroga/deskflow

## Overview

DeskFlow is an IT help-desk and asset-tracking application. Its principal workflow is signing in, then managing users and assets and submitting, triaging, and tracking tickets, including SLA clocks and history. The README also documents dashboard, technician, reporting, and settings capabilities. The backend is concentrated in Program.cs; excerpts are partial, so uncertain endpoint-to-feature wiring is omitted.

Main entry points: [`DeskFlow.Api/Program.cs`](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs) (HTTP API), [`DeskFlow.Api/wwwroot/app.html`](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/wwwroot/app.html) (App shell), [`DeskFlow.Api/wwwroot/login.html`](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/wwwroot/login.html) (Sign-in page), [`users.sql`](https://github.com/aldousroga/deskflow/blob/main/users.sql) (Users store)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web interface"]
  node_login["Sign-in page<br/>[login.html]"]
  node_app["App shell<br/>[app.html]"]
end

subgraph group_identity["Identity and users"]
  node_auth["Cookie authentication<br/>[Program.cs]"]
  node_users["User management<br/>[Program.cs]"]
  node_usersdb[("Users store<br/>[users.sql]")]
end

subgraph group_operations["Service operations"]
  node_assets["Asset management<br/>[Program.cs]"]
  node_assetsdb[("Assets store<br/>[assets.sql]")]
  node_tickets["Ticket lifecycle<br/>[Program.cs]"]
  node_ticketsdb[("Tickets store<br/>[tickets.sql]")]
  node_sla["SLA tracking<br/>[Program.cs]"]
  node_sladb[("SLA policies<br/>[sla_policies.sql]")]
  node_history["Ticket history<br/>[Program.cs]"]
end

subgraph group_admin["Insights and settings"]
  node_dashboard["Dashboard<br/>[app.html]"]
  node_technicians["Technicians<br/>[app.html]"]
  node_reports["Reports<br/>[app.html]"]
  node_settings["Settings<br/>[Program.cs]"]
  node_settingsdb[("Settings data")]
end

node_person(("Staff or requester"))
node_api["HTTP API<br/>[Program.cs]"]
node_mysql[("MySQL")]
node_google["Google sign-in"]

node_person -->|"opens"| node_login
node_login -->|"signs in"| node_api
node_api -->|"authenticates"| node_auth
node_auth -->|"checks credentials"| node_usersdb
node_auth -->|"redirects"| node_login
node_person -->|"uses"| node_app
node_app -->|"requests"| node_api
node_api -->|"dispatches"| node_users
node_api -->|"dispatches"| node_assets
node_api -->|"dispatches"| node_tickets
node_api -->|"dispatches"| node_settings
node_users -->|"reads/writes"| node_usersdb
node_assets -->|"reads/writes"| node_assetsdb
node_tickets -->|"reads/writes"| node_ticketsdb
node_tickets -->|"gets policies"| node_sla
node_sla -->|"reads policies"| node_sladb
node_tickets -->|"logs changes"| node_history
node_history -->|"writes history"| node_ticketsdb
node_api -->|"serves app"| node_dashboard
node_app -->|"shows view"| node_technicians
node_app -->|"shows view"| node_reports
node_settings -->|"reads/writes"| node_settingsdb
node_api -->|"connects"| node_mysql
node_api -.->|"supports optional sign-in"| node_google

click node_login "https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/wwwroot/login.html"
click node_app "https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/wwwroot/app.html"
click node_api "https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs"
click node_auth "https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs"
click node_users "https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs"
click node_usersdb "https://github.com/aldousroga/deskflow/blob/main/users.sql"
click node_assets "https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs"
click node_assetsdb "https://github.com/aldousroga/deskflow/blob/main/assets.sql"
click node_tickets "https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs"
click node_ticketsdb "https://github.com/aldousroga/deskflow/blob/main/tickets.sql"
click node_sla "https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs"
click node_sladb "https://github.com/aldousroga/deskflow/blob/main/sla_policies.sql"
click node_history "https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs"
click node_dashboard "https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/wwwroot/app.html"
click node_technicians "https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/wwwroot/app.html"
click node_reports "https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/wwwroot/app.html"
click node_settings "https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs"
click node_settingsdb "https://github.com/aldousroga/deskflow/blob/main/settings_tables.sql"

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_login,node_app toneBlue
class node_auth,node_users,node_usersdb,node_mysql toneAmber
class node_assets,node_assetsdb,node_tickets,node_ticketsdb,node_sla,node_sladb,node_history,node_person,node_api toneMint
class node_dashboard,node_technicians,node_reports,node_settings,node_settingsdb toneRose
class node_google toneIndigo
```

## Components

### Web interface

- [Sign-in page](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/wwwroot/login.html): `DeskFlow.Api/wwwroot/login.html`
- [App shell](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/wwwroot/app.html): `DeskFlow.Api/wwwroot/app.html`

### Identity and users

- [Cookie authentication](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs): `DeskFlow.Api/Program.cs`
- [User management](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs): `DeskFlow.Api/Program.cs`
- [Users store](https://github.com/aldousroga/deskflow/blob/main/users.sql): `users.sql`

### Service operations

- [Asset management](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs): `DeskFlow.Api/Program.cs`
- [Assets store](https://github.com/aldousroga/deskflow/blob/main/assets.sql): `assets.sql`
- [Ticket lifecycle](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs): `DeskFlow.Api/Program.cs`
- [Tickets store](https://github.com/aldousroga/deskflow/blob/main/tickets.sql): `tickets.sql`
- [SLA tracking](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs): `DeskFlow.Api/Program.cs`
- [SLA policies](https://github.com/aldousroga/deskflow/blob/main/sla_policies.sql): `sla_policies.sql`
- [Ticket history](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs): `DeskFlow.Api/Program.cs`

### Insights and settings

- [Dashboard](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/wwwroot/app.html): `DeskFlow.Api/wwwroot/app.html`
- [Technicians](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/wwwroot/app.html): `DeskFlow.Api/wwwroot/app.html`
- [Reports](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/wwwroot/app.html): `DeskFlow.Api/wwwroot/app.html`
- [Settings](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs): `DeskFlow.Api/Program.cs`
- [Settings data](https://github.com/aldousroga/deskflow/blob/main/settings_tables.sql): `settings_tables.sql`

### Other components

- **Staff or requester**
- [HTTP API](https://github.com/aldousroga/deskflow/blob/main/DeskFlow.Api/Program.cs): `DeskFlow.Api/Program.cs`
- **MySQL**
- **Google sign-in**

## Connections

- Staff or requester → Sign-in page: opens
- Sign-in page → HTTP API: signs in
- HTTP API → Cookie authentication: authenticates
- Cookie authentication → Users store: checks credentials
- Cookie authentication → Sign-in page: redirects
- Staff or requester → App shell: uses
- App shell → HTTP API: requests
- HTTP API → User management: dispatches
- HTTP API → Asset management: dispatches
- HTTP API → Ticket lifecycle: dispatches
- HTTP API → Settings: dispatches
- User management → Users store: reads/writes
- Asset management → Assets store: reads/writes
- Ticket lifecycle → Tickets store: reads/writes
- Ticket lifecycle → SLA tracking: gets policies
- SLA tracking → SLA policies: reads policies
- Ticket lifecycle → Ticket history: logs changes
- Ticket history → Tickets store: writes history
- HTTP API → Dashboard: serves app
- App shell → Technicians: shows view
- App shell → Reports: shows view
- Settings → Settings data: reads/writes
- HTTP API → MySQL: connects
- HTTP API → Google sign-in: supports optional sign-in
