# mrkenny44/urlaubsplaner architecture

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

- Interactive diagram: https://gitdiagram.com/mrkenny44/urlaubsplaner
- Repository: https://github.com/mrkenny44/urlaubsplaner

## Overview

Urlaubsplaner is a WPF vacation-hours planner. Users enter date ranges, review or edit daily hours, and see planned and taken-hour balances; the app can also load and save vacation entries as XML. The sampled code shows the main calculation, holiday lookup, persistence, and edit-dialog behavior. The project directory is present in the tree, but its contents and the XAML markup were not sampled, so unsampled bindings and other features are not inferred.

Main entry points: [`MainWindow.xaml.cs`](https://github.com/mrkenny44/urlaubsplaner/blob/Master/MainWindow.xaml.cs) (Planner controller), [`UrlaubBearbeiten.xaml.cs`](https://github.com/mrkenny44/urlaubsplaner/blob/Master/UrlaubBearbeiten.xaml.cs) (Day editor), [`MainWindow.xaml`](https://github.com/mrkenny44/urlaubsplaner/blob/Master/MainWindow.xaml) (Main window), [`UrlaubBearbeiten.xaml`](https://github.com/mrkenny44/urlaubsplaner/blob/Master/UrlaubBearbeiten.xaml) (Day edit window)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["WPF interface"]
  node_main_view["Main window<br/>[MainWindow.xaml]"]
  node_main_logic["Planner controller<br/>[MainWindow.xaml.cs]"]
  node_edit_view["Day edit window"]
  node_edit_logic["Day editor"]
end

subgraph group_domain["Vacation planning"]
  node_vacations["Vacation entries<br/>[MainWindow.xaml.cs]"]
  node_day_calc["Day and hour calculation<br/>[MainWindow.xaml.cs]"]
  node_holiday_rules["Holiday rules<br/>[MainWindow.xaml.cs]"]
  node_balances["Hour balances<br/>[MainWindow.xaml.cs]"]
end

subgraph group_persistence["Data and services"]
  node_xml_file[("Vacation XML file")]
  node_holiday_api["Holiday API"]
end

node_user(("Planner user"))

node_user -->|"uses"| node_main_view
node_main_view -->|"event handlers"| node_main_logic
node_main_logic -->|"calculates hours"| node_day_calc
node_day_calc -->|"checks workdays"| node_holiday_rules
node_holiday_rules -.->|"requests holidays"| node_holiday_api
node_main_logic -->|"adds entries"| node_vacations
node_main_logic -->|"opens dialog"| node_edit_view
node_edit_view -->|"event handlers"| node_edit_logic
node_edit_logic -->|"calls CalcStunden"| node_day_calc
node_edit_logic -->|"adds edited entry"| node_vacations
node_main_logic -->|"calculates balances"| node_balances
node_main_logic -->|"reads and writes"| node_xml_file
node_main_logic -->|"loads and saves"| node_vacations

click node_main_view "https://github.com/mrkenny44/urlaubsplaner/blob/Master/MainWindow.xaml"
click node_main_logic "https://github.com/mrkenny44/urlaubsplaner/blob/Master/MainWindow.xaml.cs"
click node_edit_view "https://github.com/mrkenny44/urlaubsplaner/blob/Master/UrlaubBearbeiten.xaml"
click node_edit_logic "https://github.com/mrkenny44/urlaubsplaner/blob/Master/UrlaubBearbeiten.xaml.cs"
click node_vacations "https://github.com/mrkenny44/urlaubsplaner/blob/Master/MainWindow.xaml.cs"
click node_day_calc "https://github.com/mrkenny44/urlaubsplaner/blob/Master/MainWindow.xaml.cs"
click node_holiday_rules "https://github.com/mrkenny44/urlaubsplaner/blob/Master/MainWindow.xaml.cs"
click node_balances "https://github.com/mrkenny44/urlaubsplaner/blob/Master/MainWindow.xaml.cs"

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_main_view,node_main_logic,node_edit_view,node_edit_logic,node_user toneBlue
class node_vacations,node_day_calc,node_holiday_rules,node_balances toneAmber
class node_xml_file,node_holiday_api toneMint
```

## Components

### WPF interface

- [Main window](https://github.com/mrkenny44/urlaubsplaner/blob/Master/MainWindow.xaml): `MainWindow.xaml`
- [Planner controller](https://github.com/mrkenny44/urlaubsplaner/blob/Master/MainWindow.xaml.cs): `MainWindow.xaml.cs`
- [Day edit window](https://github.com/mrkenny44/urlaubsplaner/blob/Master/UrlaubBearbeiten.xaml): `UrlaubBearbeiten.xaml`
- [Day editor](https://github.com/mrkenny44/urlaubsplaner/blob/Master/UrlaubBearbeiten.xaml.cs): `UrlaubBearbeiten.xaml.cs`

### Vacation planning

- [Vacation entries](https://github.com/mrkenny44/urlaubsplaner/blob/Master/MainWindow.xaml.cs): `MainWindow.xaml.cs`
- [Day and hour calculation](https://github.com/mrkenny44/urlaubsplaner/blob/Master/MainWindow.xaml.cs): `MainWindow.xaml.cs`
- [Holiday rules](https://github.com/mrkenny44/urlaubsplaner/blob/Master/MainWindow.xaml.cs): `MainWindow.xaml.cs`
- [Hour balances](https://github.com/mrkenny44/urlaubsplaner/blob/Master/MainWindow.xaml.cs): `MainWindow.xaml.cs`

### Data and services

- **Vacation XML file**
- **Holiday API**

### Other components

- **Planner user**

## Connections

- Planner user → Main window: uses
- Main window → Planner controller: event handlers
- Planner controller → Day and hour calculation: calculates hours
- Day and hour calculation → Holiday rules: checks workdays
- Holiday rules → Holiday API: requests holidays
- Planner controller → Vacation entries: adds entries
- Planner controller → Day edit window: opens dialog
- Day edit window → Day editor: event handlers
- Day editor → Day and hour calculation: calls CalcStunden
- Day editor → Vacation entries: adds edited entry
- Planner controller → Hour balances: calculates balances
- Planner controller → Vacation XML file: reads and writes
- Planner controller → Vacation entries: loads and saves
