# fr4gshow/qwerty1 architecture

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

- Interactive diagram: https://gitdiagram.com/fr4gshow/qwerty1
- Repository: https://github.com/fr4gshow/qwerty1

## Overview

TicketApp is a local desktop ticket-management system. Users sign in, manage tickets and tasks, review reports, and optionally sync Slack messages into tickets; monthly reports can be exported as PDFs. The GUI is the central workflow owner, backed by SQLite and per-user configuration. Slack is an optional outbound integration, not an inbound service. The README identifies web_server as a core module, but explicitly says the application does not start a server; its runtime role is unclear from the excerpts.

Main entry points: [`src/gui/app.cpp`](https://github.com/fr4gshow/qwerty1/blob/main/src/gui/app.cpp) (App screens), [`src/main.cpp`](https://github.com/fr4gshow/qwerty1/blob/main/src/main.cpp) (Window bootstrap), [`src/db.cpp`](https://github.com/fr4gshow/qwerty1/blob/main/src/db.cpp) (SQLite data layer), [`src/slack_client.cpp`](https://github.com/fr4gshow/qwerty1/blob/main/src/slack_client.cpp) (Slack API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop interface"]
  node_bootstrap["Window bootstrap<br/>[main.cpp]"]
  node_screens["App screens<br/>[app.cpp]"]
  node_theme["Dark theme<br/>[theme.cpp]"]
end

subgraph group_domain["Ticket operations"]
  node_ticket_ui["Ticket screens<br/>[app.cpp]"]
  node_task_ui["Task screens<br/>[app.cpp]"]
  node_reports_ui["Reports and stats<br/>[app.cpp]"]
  node_settings_ui["Settings and login<br/>[app.cpp]"]
end

subgraph group_storage["Persistence and configuration"]
  node_database[("SQLite data layer<br/>[db.cpp]")]
  node_config["JSON configuration<br/>[config.cpp]"]
  node_shared["Shared constants and paths<br/>[common.cpp]"]
  node_utilities["Hashing and parsing<br/>[util.cpp]"]
end

subgraph group_integrations["Reports and integrations"]
  node_slack["Slack API client<br/>[slack_client.cpp]"]
  node_pdf["PDF writer<br/>[pdf_writer.cpp]"]
  node_platform["OS integrations<br/>[platform.cpp]"]
  node_web_server["Web server module<br/>[web_server.cpp]"]
end

node_user(("Desktop user"))
node_slack_api{{"Slack API"}}
node_sqlite_store[("SQLite database")]

node_user -->|"launches"| node_bootstrap
node_bootstrap -->|"renders"| node_screens
node_bootstrap -->|"applies"| node_theme
node_screens -->|"renders"| node_ticket_ui
node_screens -->|"renders"| node_task_ui
node_screens -->|"renders"| node_reports_ui
node_screens -->|"renders"| node_settings_ui
node_screens -.->|"reads and writes"| node_database
node_screens -.->|"uses"| node_config
node_screens -->|"requests messages"| node_slack
node_slack -->|"calls HTTPS"| node_slack_api
node_screens -->|"creates report"| node_pdf
node_screens -->|"shows notifications"| node_platform
node_database -->|"persists data"| node_sqlite_store

click node_bootstrap "https://github.com/fr4gshow/qwerty1/blob/main/src/main.cpp"
click node_screens "https://github.com/fr4gshow/qwerty1/blob/main/src/gui/app.cpp"
click node_theme "https://github.com/fr4gshow/qwerty1/blob/main/src/gui/theme.cpp"
click node_ticket_ui "https://github.com/fr4gshow/qwerty1/blob/main/src/gui/app.cpp"
click node_task_ui "https://github.com/fr4gshow/qwerty1/blob/main/src/gui/app.cpp"
click node_reports_ui "https://github.com/fr4gshow/qwerty1/blob/main/src/gui/app.cpp"
click node_settings_ui "https://github.com/fr4gshow/qwerty1/blob/main/src/gui/app.cpp"
click node_database "https://github.com/fr4gshow/qwerty1/blob/main/src/db.cpp"
click node_config "https://github.com/fr4gshow/qwerty1/blob/main/src/config.cpp"
click node_shared "https://github.com/fr4gshow/qwerty1/blob/main/src/common.cpp"
click node_utilities "https://github.com/fr4gshow/qwerty1/blob/main/src/util.cpp"
click node_slack "https://github.com/fr4gshow/qwerty1/blob/main/src/slack_client.cpp"
click node_pdf "https://github.com/fr4gshow/qwerty1/blob/main/src/pdf_writer.cpp"
click node_platform "https://github.com/fr4gshow/qwerty1/blob/main/src/platform.cpp"
click node_web_server "https://github.com/fr4gshow/qwerty1/blob/main/src/web_server.cpp"

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_screens,node_theme,node_user toneBlue
class node_ticket_ui,node_task_ui,node_reports_ui,node_settings_ui,node_sqlite_store toneAmber
class node_database,node_config,node_shared,node_utilities,node_slack_api toneMint
class node_slack,node_pdf,node_platform,node_web_server toneRose
```

## Components

### Desktop interface

- [Window bootstrap](https://github.com/fr4gshow/qwerty1/blob/main/src/main.cpp): `src/main.cpp`
- [App screens](https://github.com/fr4gshow/qwerty1/blob/main/src/gui/app.cpp): `src/gui/app.cpp`
- [Dark theme](https://github.com/fr4gshow/qwerty1/blob/main/src/gui/theme.cpp): `src/gui/theme.cpp`

### Ticket operations

- [Ticket screens](https://github.com/fr4gshow/qwerty1/blob/main/src/gui/app.cpp): `src/gui/app.cpp`
- [Task screens](https://github.com/fr4gshow/qwerty1/blob/main/src/gui/app.cpp): `src/gui/app.cpp`
- [Reports and stats](https://github.com/fr4gshow/qwerty1/blob/main/src/gui/app.cpp): `src/gui/app.cpp`
- [Settings and login](https://github.com/fr4gshow/qwerty1/blob/main/src/gui/app.cpp): `src/gui/app.cpp`

### Persistence and configuration

- [SQLite data layer](https://github.com/fr4gshow/qwerty1/blob/main/src/db.cpp): `src/db.cpp`
- [JSON configuration](https://github.com/fr4gshow/qwerty1/blob/main/src/config.cpp): `src/config.cpp`
- [Shared constants and paths](https://github.com/fr4gshow/qwerty1/blob/main/src/common.cpp): `src/common.cpp`
- [Hashing and parsing](https://github.com/fr4gshow/qwerty1/blob/main/src/util.cpp): `src/util.cpp`

### Reports and integrations

- [Slack API client](https://github.com/fr4gshow/qwerty1/blob/main/src/slack_client.cpp): `src/slack_client.cpp`
- [PDF writer](https://github.com/fr4gshow/qwerty1/blob/main/src/pdf_writer.cpp): `src/pdf_writer.cpp`
- [OS integrations](https://github.com/fr4gshow/qwerty1/blob/main/src/platform.cpp): `src/platform.cpp`
- [Web server module](https://github.com/fr4gshow/qwerty1/blob/main/src/web_server.cpp): `src/web_server.cpp`

### Other components

- **Desktop user**
- **Slack API**
- **SQLite database**

## Connections

- Desktop user → Window bootstrap: launches (evidence: `README.md`)
- Window bootstrap → App screens: renders (evidence: `src/main.cpp`)
- Window bootstrap → Dark theme: applies (evidence: `src/main.cpp`)
- App screens → Ticket screens: renders (evidence: `src/gui/app.cpp`)
- App screens → Task screens: renders (evidence: `src/gui/app.cpp`)
- App screens → Reports and stats: renders (evidence: `src/gui/app.cpp`)
- App screens → Settings and login: renders (evidence: `src/gui/app.cpp`)
- App screens → SQLite data layer: reads and writes
- App screens → JSON configuration: uses
- App screens → Slack API client: requests messages (evidence: `src/gui/app.cpp`)
- Slack API client → Slack API: calls HTTPS (evidence: `src/slack_client.cpp`)
- App screens → PDF writer: creates report (evidence: `src/gui/app.cpp`)
- App screens → OS integrations: shows notifications (evidence: `src/gui/app.cpp`)
- SQLite data layer → SQLite database: persists data (evidence: `README.md`)
