# open-source-uom/unibackpack architecture

> Architecture diagram of the GitHub repository open-source-uom/unibackpack, 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/open-source-uom/unibackpack
- Repository: https://github.com/open-source-uom/unibackpack
- Video tour (about a minute): https://gitdiagram.com/open-source-uom/unibackpack/video

## Overview

UniBackpack is a Qt desktop application that selects university and department software, checks packages against the detected Linux package manager, and installs available packages with elevated privileges. The main workflow and UI wiring are visible in sampled source; README-described department-specific configuration is represented by the listed resource directory. Downloader excerpts are partial, so only clearly supported package-check and installation connections are shown.

Main entry points: [`src/MainWindow.cpp`](https://github.com/open-source-uom/unibackpack/blob/main/src/MainWindow.cpp) (University selection), [`src/Downloader.cpp`](https://github.com/open-source-uom/unibackpack/blob/main/src/Downloader.cpp) (Package workflow), [`src/main.cpp`](https://github.com/open-source-uom/unibackpack/blob/main/src/main.cpp) (Application startup), [`resources/lists/University of Western Macedonia/Informatics/apt_list.txt`](https://github.com/open-source-uom/unibackpack/blob/main/resources/lists/University%20of%20Western%20Macedonia/Informatics/apt_list.txt) (Department package lists)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop UI"]
  node_entry["Application startup<br/>[main.cpp]"]
  node_window["University selection<br/>[MainWindow.cpp]"]
  node_form["Window layout<br/>[MainWindow.ui]"]
  node_settings["Language settings<br/>[main.cpp]"]
end

subgraph group_workflow["Package Workflow"]
  node_downloader["Package workflow<br/>[Downloader.cpp]"]
  node_detection["Manager detection<br/>[Downloader.cpp]"]
  node_repository["Repository checks<br/>[Downloader.cpp]"]
  node_installation["Privileged installation<br/>[Downloader.cpp]"]
end

subgraph group_assets["App Resources"]
  node_localization["Translations<br/>[unibackpack_en.ts]"]
  node_greek["Greek translations<br/>[unibackpack_el.ts]"]
  node_lists["Department package lists<br/>[apt_list.txt]"]
end

node_user(("Student"))
node_package_tools["Linux package tools"]
node_privilege["Privilege elevation"]

node_user -->|"selects university and department"| node_window
node_entry -->|"opens window"| node_window
node_window -->|"sets up UI"| node_form
node_entry -->|"reads language"| node_settings
node_window -->|"reads and saves language"| node_settings
node_entry -->|"loads translations"| node_localization
node_window -->|"loads Greek catalog"| node_greek
node_window -->|"starts package workflow"| node_downloader
node_window -->|"requests manager"| node_detection
node_downloader -->|"checks executables"| node_detection
node_detection -->|"finds installed manager"| node_package_tools
node_window -->|"requests package filtering"| node_downloader
node_lists -->|"provides department packages"| node_downloader
node_downloader -->|"checks package availability"| node_repository
node_repository -->|"queries apt or pacman"| node_package_tools
node_window -->|"dispatches selected packages"| node_installation
node_installation -->|"launches with pkexec"| node_privilege
node_privilege -->|"runs apt or pacman install"| node_package_tools
node_downloader -->|"reports status and progress"| node_window

click node_entry "https://github.com/open-source-uom/unibackpack/blob/main/src/main.cpp"
click node_window "https://github.com/open-source-uom/unibackpack/blob/main/src/MainWindow.cpp"
click node_form "https://github.com/open-source-uom/unibackpack/blob/main/ui/MainWindow.ui"
click node_settings "https://github.com/open-source-uom/unibackpack/blob/main/src/main.cpp"
click node_localization "https://github.com/open-source-uom/unibackpack/blob/main/translations/unibackpack_en.ts"
click node_greek "https://github.com/open-source-uom/unibackpack/blob/main/translations/unibackpack_el.ts"
click node_lists "https://github.com/open-source-uom/unibackpack/blob/main/resources/lists/University%20of%20Western%20Macedonia/Informatics/apt_list.txt"
click node_downloader "https://github.com/open-source-uom/unibackpack/blob/main/src/Downloader.cpp"
click node_detection "https://github.com/open-source-uom/unibackpack/blob/main/src/Downloader.cpp"
click node_repository "https://github.com/open-source-uom/unibackpack/blob/main/src/Downloader.cpp"
click node_installation "https://github.com/open-source-uom/unibackpack/blob/main/src/Downloader.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_entry,node_window,node_form,node_settings toneBlue
class node_downloader,node_detection,node_repository,node_installation toneAmber
class node_localization,node_greek,node_lists toneMint
class node_user,node_package_tools,node_privilege toneIndigo
```

## Components

### Desktop UI

- [Application startup](https://github.com/open-source-uom/unibackpack/blob/main/src/main.cpp): `src/main.cpp`
- [University selection](https://github.com/open-source-uom/unibackpack/blob/main/src/MainWindow.cpp): `src/MainWindow.cpp`
- [Window layout](https://github.com/open-source-uom/unibackpack/blob/main/ui/MainWindow.ui): `ui/MainWindow.ui`
- [Language settings](https://github.com/open-source-uom/unibackpack/blob/main/src/main.cpp): `src/main.cpp`

### Package Workflow

- [Package workflow](https://github.com/open-source-uom/unibackpack/blob/main/src/Downloader.cpp): `src/Downloader.cpp`
- [Manager detection](https://github.com/open-source-uom/unibackpack/blob/main/src/Downloader.cpp): `src/Downloader.cpp`
- [Repository checks](https://github.com/open-source-uom/unibackpack/blob/main/src/Downloader.cpp): `src/Downloader.cpp`
- [Privileged installation](https://github.com/open-source-uom/unibackpack/blob/main/src/Downloader.cpp): `src/Downloader.cpp`

### App Resources

- [Translations](https://github.com/open-source-uom/unibackpack/blob/main/translations/unibackpack_en.ts): `translations/unibackpack_en.ts`
- [Greek translations](https://github.com/open-source-uom/unibackpack/blob/main/translations/unibackpack_el.ts): `translations/unibackpack_el.ts`
- [Department package lists](https://github.com/open-source-uom/unibackpack/blob/main/resources/lists/University%20of%20Western%20Macedonia/Informatics/apt_list.txt): `resources/lists/University of Western Macedonia/Informatics/apt_list.txt`

### Other components

- **Student**
- **Linux package tools**
- **Privilege elevation**

## Connections

- Student → University selection: selects university and department
- Application startup → University selection: opens window
- University selection → Window layout: sets up UI
- Application startup → Language settings: reads language
- University selection → Language settings: reads and saves language
- Application startup → Translations: loads translations
- University selection → Greek translations: loads Greek catalog
- University selection → Package workflow: starts package workflow
- University selection → Manager detection: requests manager
- Package workflow → Manager detection: checks executables
- Manager detection → Linux package tools: finds installed manager
- University selection → Package workflow: requests package filtering
- Department package lists → Package workflow: provides department packages
- Package workflow → Repository checks: checks package availability
- Repository checks → Linux package tools: queries apt or pacman
- University selection → Privileged installation: dispatches selected packages
- Privileged installation → Privilege elevation: launches with pkexec
- Privilege elevation → Linux package tools: runs apt or pacman install
- Package workflow → University selection: reports status and progress
