# fatihkaraguzel95/kundeninbox architecture

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

- Interactive diagram: https://gitdiagram.com/fatihkaraguzel95/kundeninbox
- Repository: https://github.com/fatihkaraguzel95/kundeninbox

## Overview

Genehmiger-Inbox is a SAPUI5 approval application that consolidates open and already-decided requests from multiple workflows. An approver filters and pages through a service-backed list, opens a request to see its inbox header and approval history, and can approve or reject eligible items; workflow-specific details are shown by embedding the source application rather than recreating its form. The README documents staged detail loading, including an on-demand log section. Source excerpts show controller/service and embedding calls; some view and backend connections are documented rather than sampled.

Main entry points: [`webapp/controller/Details.controller.js`](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/Details.controller.js) (Detail controller), [`webapp/controller/Main.controller.js`](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/Main.controller.js) (Approval list), [`webapp/controller/utils/ODataService.js`](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/utils/ODataService.js) (OData access), [`webapp/Component.js`](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/Component.js) (App component)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inbox["Inbox workflow"]
  node_list["Approval list<br/>[Main.controller.js]"]
  node_listview["List view<br/>[Main.view.xml]"]
  node_filters["Filter dialog"]
end

subgraph group_detail["Detail workflow"]
  node_detailcontroller["Detail controller"]
  node_detailview["Detail shell<br/>[Details.view.xml]"]
  node_registry["Workflow registry"]
  node_launcher["Source app launcher"]
  node_sourceapp["Neueinstellung app"]
  node_history["Approval history"]
  node_log["Request log"]
  node_actions["Action dialog"]
end

subgraph group_runtime["UI runtime"]
  node_fcl["Column navigation"]
  node_component["App component<br/>[Component.js]"]
  node_models["UI models<br/>[models.js]"]
  node_formatter["Display formatting<br/>[formatter.js]"]
end

subgraph group_services["Services"]
  node_odata["OData access<br/>[ODataService.js]"]
  node_approvalbackend[("Inbox backend")]
  node_sourcebackend[("Source app service")]
end

node_approver(("Approver"))

node_approver -->|"uses"| node_listview
node_listview -->|"handled by"| node_list
node_approver -->|"filters"| node_filters
node_list -->|"reads list and counts"| node_odata
node_odata -->|"reads and acts on"| node_approvalbackend
node_list -->|"looks up workflow"| node_registry
node_approver -->|"opens request"| node_detailcontroller
node_detailcontroller -->|"reads header; submits action"| node_odata
node_detailcontroller -->|"gets source configuration"| node_registry
node_detailcontroller -->|"opens source app"| node_launcher
node_launcher -->|"embeds component"| node_sourceapp
node_sourceapp -.->|"loads its own detail data"| node_sourcebackend
node_detailcontroller -->|"loads history section"| node_history
node_detailcontroller -->|"loads on demand"| node_log
node_detailcontroller -->|"confirms actions"| node_actions
node_approver -->|"approves or rejects"| node_actions
node_component -->|"creates UI models"| node_models
node_component -.->|"starts routing"| node_fcl
node_list -->|"formats display"| node_formatter
node_approver -->|"navigates columns"| node_fcl
node_detailcontroller -->|"fills detail shell"| node_detailview

click node_list "https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/Main.controller.js"
click node_listview "https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/view/Main.view.xml"
click node_filters "https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/view/fragments/common/FilterDialog.fragment.xml"
click node_odata "https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/utils/ODataService.js"
click node_detailcontroller "https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/Details.controller.js"
click node_detailview "https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/view/Details.view.xml"
click node_registry "https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/utils/WorkflowRegistry.js"
click node_launcher "https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/utils/SourceAppLauncher.js"
click node_history "https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/view/fragments/common/ApprovalHistory.fragment.xml"
click node_log "https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/view/fragments/common/ActionDialog.fragment.xml"
click node_actions "https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/view/fragments/common/ActionDialog.fragment.xml"
click node_fcl "https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/FlexibleColumnLayout.controller.js"
click node_component "https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/Component.js"
click node_models "https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/model/models.js"
click node_formatter "https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/utils/formatter.js"

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_list,node_listview,node_filters toneBlue
class node_detailcontroller,node_detailview,node_registry,node_launcher,node_sourceapp,node_history,node_log,node_actions toneAmber
class node_fcl,node_component,node_models,node_formatter toneMint
class node_odata,node_approvalbackend,node_sourcebackend toneRose
class node_approver toneIndigo
```

## Components

### Inbox workflow

- [Approval list](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/Main.controller.js): `webapp/controller/Main.controller.js`
- [List view](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/view/Main.view.xml): `webapp/view/Main.view.xml`
- [Filter dialog](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/view/fragments/common/FilterDialog.fragment.xml): `webapp/view/fragments/common/FilterDialog.fragment.xml`

### Detail workflow

- [Detail controller](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/Details.controller.js): `webapp/controller/Details.controller.js`
- [Detail shell](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/view/Details.view.xml): `webapp/view/Details.view.xml`
- [Workflow registry](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/utils/WorkflowRegistry.js): `webapp/controller/utils/WorkflowRegistry.js`
- [Source app launcher](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/utils/SourceAppLauncher.js): `webapp/controller/utils/SourceAppLauncher.js`
- **Neueinstellung app**
- [Approval history](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/view/fragments/common/ApprovalHistory.fragment.xml): `webapp/view/fragments/common/ApprovalHistory.fragment.xml`
- [Request log](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/view/fragments/common/ActionDialog.fragment.xml): `webapp/view/fragments/common/ActionDialog.fragment.xml`
- [Action dialog](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/view/fragments/common/ActionDialog.fragment.xml): `webapp/view/fragments/common/ActionDialog.fragment.xml`

### UI runtime

- [Column navigation](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/FlexibleColumnLayout.controller.js): `webapp/controller/FlexibleColumnLayout.controller.js`
- [App component](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/Component.js): `webapp/Component.js`
- [UI models](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/model/models.js): `webapp/model/models.js`
- [Display formatting](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/utils/formatter.js): `webapp/controller/utils/formatter.js`

### Services

- [OData access](https://github.com/fatihkaraguzel95/kundeninbox/blob/main/webapp/controller/utils/ODataService.js): `webapp/controller/utils/ODataService.js`
- **Inbox backend**
- **Source app service**

### Other components

- **Approver**

## Connections

- Approver → List view: uses (evidence: `README.md`)
- List view → Approval list: handled by (evidence: `README.md`)
- Approver → Filter dialog: filters (evidence: `README.md`)
- Approval list → OData access: reads list and counts (evidence: `webapp/controller/Main.controller.js`)
- OData access → Inbox backend: reads and acts on (evidence: `webapp/controller/utils/ODataService.js`)
- Approval list → Workflow registry: looks up workflow (evidence: `webapp/controller/Main.controller.js`)
- Approver → Detail controller: opens request
- Detail controller → OData access: reads header; submits action (evidence: `webapp/controller/Details.controller.js`)
- Detail controller → Workflow registry: gets source configuration (evidence: `webapp/controller/Details.controller.js`)
- Detail controller → Source app launcher: opens source app (evidence: `webapp/controller/Details.controller.js`)
- Source app launcher → Neueinstellung app: embeds component (evidence: `webapp/controller/utils/SourceAppLauncher.js`)
- Neueinstellung app → Source app service: loads its own detail data (evidence: `README.md`)
- Detail controller → Approval history: loads history section (evidence: `README.md`)
- Detail controller → Request log: loads on demand (evidence: `README.md`)
- Detail controller → Action dialog: confirms actions (evidence: `webapp/controller/Details.controller.js`)
- Approver → Action dialog: approves or rejects (evidence: `README.md`)
- App component → UI models: creates UI models (evidence: `webapp/Component.js`)
- App component → Column navigation: starts routing
- Approval list → Display formatting: formats display (evidence: `webapp/controller/Main.controller.js`)
- Approver → Column navigation: navigates columns (evidence: `webapp/controller/FlexibleColumnLayout.controller.js`)
- Detail controller → Detail shell: fills detail shell (evidence: `README.md`)
