# grisu-noe/fullscreenbrowser architecture

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

- Interactive diagram: https://gitdiagram.com/grisu-noe/fullscreenbrowser
- Repository: https://github.com/grisu-noe/fullscreenbrowser

## Overview

FullscreenBrowser is a desktop kiosk browser intended to extend the infoscreen.florian10.info experience. Its startup composes registered services, then window management creates/configures browser instances; the app also provides screen/power controls, printing of emergency data, and HTTP services. A separate Config-Gui edits browser configuration. Static-map request generation is a supporting shared capability. The README gives only the broad product goal; unsampled modules and several runtime links are therefore represented conservatively.

Main entry points: [`src/Gui/FullscreenBrowser/Print/PrintController.cs`](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/Print/PrintController.cs) (Print controller), [`src/Gui/FullscreenBrowser/WindowManager.cs`](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/WindowManager.cs) (Window manager), [`src/Gui/FullscreenBrowser/CustomBootstrapper/StructureMapRegistry.cs`](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/CustomBootstrapper/StructureMapRegistry.cs) (Service registrations), [`src/Shared/Configuration/Google/StaticMaps/StaticMapsEngine.cs`](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Shared/Configuration/Google/StaticMaps/StaticMapsEngine.cs) (Static map engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_startup["Startup and configuration"]
  node_configui["Config editor<br/>[MainWindow.xaml.cs]"]
  node_viewmodel["Config view model"]
  node_configdata["Browser configuration<br/>[BrowserConfig.cs]"]
  node_entry["Application startup<br/>[Program.cs]"]
  node_registry["Service registrations"]
  node_container["Bootstrap container<br/>[Bootstrapper.cs]"]
  node_tasks["Startup tasks<br/>[StartupTasks.cs]"]
  node_browserconfig["Configuration loader"]
end

subgraph group_kiosk["Kiosk runtime"]
  node_windowmgr["Window manager<br/>[WindowManager.cs]"]
  node_gecko["Gecko browser<br/>[GeckoBrowser.cs]"]
  node_power["Power management<br/>[PowerManagement.cs]"]
  node_screensaver["Screensaver control<br/>[Screensaver.cs]"]
  node_refresher["Screen refresher"]
  node_httpserver["HTTP server<br/>[HttpServer.cs]"]
  node_httpprocessor["HTTP request processor<br/>[HttpProcessor.cs]"]
end

subgraph group_print["Emergency printing"]
  node_printcontroller["Print controller<br/>[PrintController.cs]"]
  node_printview["Print template view"]
  node_emergency["Emergency data<br/>[EmergencyData.cs]"]
  node_queue["Print queue<br/>[QueueManager.cs]"]
end

subgraph group_shared["Shared map support"]
  node_maprequest["Static map request"]
  node_mapengine["Static map engine"]
  node_queryparams["Query parameters"]
end

node_operator(("Kiosk operator"))
node_googlemaps["Google Static Maps"]

node_operator -->|"edits settings"| node_configui
node_configui -->|"uses"| node_viewmodel
node_viewmodel -.->|"edits configuration"| node_configdata
node_entry -->|"initializes with"| node_registry
node_entry -->|"starts services"| node_container
node_registry -->|"configures"| node_container
node_container -->|"runs"| node_tasks
node_tasks -.->|"initializes"| node_windowmgr
node_tasks -.->|"initializes"| node_printcontroller
node_registry -->|"registers"| node_browserconfig
node_windowmgr -->|"reads settings"| node_browserconfig
node_windowmgr -->|"sets up browsers"| node_gecko
node_windowmgr -->|"requests power hold"| node_power
node_windowmgr -->|"hides refresher"| node_refresher
node_registry -->|"registers"| node_httpserver
node_httpserver -.->|"dispatches requests"| node_httpprocessor
node_operator -.->|"operates kiosk"| node_windowmgr
node_printcontroller -->|"reads print settings"| node_browserconfig
node_printcontroller -->|"builds document from"| node_printview
node_printcontroller -->|"prints records"| node_emergency
node_printcontroller -->|"uses queue"| node_queue
node_printcontroller -->|"gets browser cookies"| node_windowmgr
node_mapengine -->|"serializes"| node_maprequest
node_mapengine -->|"builds parameters"| node_queryparams
node_mapengine -.->|"creates map URL"| node_googlemaps
node_printcontroller -.->|"requests map image"| node_mapengine

click node_configui "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/Config-Gui/MainWindow.xaml.cs"
click node_viewmodel "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/Config-Gui/BrowserConfigViewModel.cs"
click node_configdata "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Shared/Configuration/XML/BrowserConfig.cs"
click node_entry "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/Program.cs"
click node_registry "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/CustomBootstrapper/StructureMapRegistry.cs"
click node_container "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Shared/Utils/Bootstrapper/Bootstrapper.cs"
click node_tasks "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Shared/Utils/Bootstrapper/StartupTasks.cs"
click node_browserconfig "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Shared/Utils/BrowserConfiguration.cs"
click node_windowmgr "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/WindowManager.cs"
click node_gecko "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/GeckoBrowser.cs"
click node_power "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/PowerManagement.cs"
click node_screensaver "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/Screensaver.cs"
click node_refresher "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/ScreenRefresher.xaml.cs"
click node_httpserver "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/HttpServer.cs"
click node_httpprocessor "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/HttpProcessor.cs"
click node_printcontroller "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/Print/PrintController.cs"
click node_printview "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/Print/PrintTemplateViewModel.cs"
click node_emergency "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/Print/Model/EmergencyData.cs"
click node_queue "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/QueueManager.cs"
click node_maprequest "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Shared/Configuration/Google/StaticMaps/Entities/StaticMapRequest.cs"
click node_mapengine "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Shared/Configuration/Google/StaticMaps/StaticMapsEngine.cs"
click node_queryparams "https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Shared/Configuration/Google/QueryStringParametersList.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_configui,node_viewmodel,node_configdata,node_entry,node_registry,node_container,node_tasks,node_browserconfig toneBlue
class node_windowmgr,node_gecko,node_power,node_screensaver,node_refresher,node_httpserver,node_httpprocessor toneAmber
class node_printcontroller,node_printview,node_emergency,node_queue toneMint
class node_maprequest,node_mapengine,node_queryparams toneRose
class node_operator,node_googlemaps toneIndigo
```

## Components

### Startup and configuration

- [Config editor](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/Config-Gui/MainWindow.xaml.cs): `src/Gui/Config-Gui/MainWindow.xaml.cs`
- [Config view model](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/Config-Gui/BrowserConfigViewModel.cs): `src/Gui/Config-Gui/BrowserConfigViewModel.cs`
- [Browser configuration](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Shared/Configuration/XML/BrowserConfig.cs): `src/Shared/Configuration/XML/BrowserConfig.cs`
- [Application startup](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/Program.cs): `src/Gui/FullscreenBrowser/Program.cs`
- [Service registrations](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/CustomBootstrapper/StructureMapRegistry.cs): `src/Gui/FullscreenBrowser/CustomBootstrapper/StructureMapRegistry.cs`
- [Bootstrap container](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Shared/Utils/Bootstrapper/Bootstrapper.cs): `src/Shared/Utils/Bootstrapper/Bootstrapper.cs`
- [Startup tasks](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Shared/Utils/Bootstrapper/StartupTasks.cs): `src/Shared/Utils/Bootstrapper/StartupTasks.cs`
- [Configuration loader](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Shared/Utils/BrowserConfiguration.cs): `src/Shared/Utils/BrowserConfiguration.cs`

### Kiosk runtime

- [Window manager](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/WindowManager.cs): `src/Gui/FullscreenBrowser/WindowManager.cs`
- [Gecko browser](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/GeckoBrowser.cs): `src/Gui/FullscreenBrowser/GeckoBrowser.cs`
- [Power management](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/PowerManagement.cs): `src/Gui/FullscreenBrowser/PowerManagement.cs`
- [Screensaver control](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/Screensaver.cs): `src/Gui/FullscreenBrowser/Screensaver.cs`
- [Screen refresher](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/ScreenRefresher.xaml.cs): `src/Gui/FullscreenBrowser/ScreenRefresher.xaml.cs`
- [HTTP server](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/HttpServer.cs): `src/Gui/FullscreenBrowser/HttpServer.cs`
- [HTTP request processor](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/HttpProcessor.cs): `src/Gui/FullscreenBrowser/HttpProcessor.cs`

### Emergency printing

- [Print controller](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/Print/PrintController.cs): `src/Gui/FullscreenBrowser/Print/PrintController.cs`
- [Print template view](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/Print/PrintTemplateViewModel.cs): `src/Gui/FullscreenBrowser/Print/PrintTemplateViewModel.cs`
- [Emergency data](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/Print/Model/EmergencyData.cs): `src/Gui/FullscreenBrowser/Print/Model/EmergencyData.cs`
- [Print queue](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Gui/FullscreenBrowser/QueueManager.cs): `src/Gui/FullscreenBrowser/QueueManager.cs`

### Shared map support

- [Static map request](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Shared/Configuration/Google/StaticMaps/Entities/StaticMapRequest.cs): `src/Shared/Configuration/Google/StaticMaps/Entities/StaticMapRequest.cs`
- [Static map engine](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Shared/Configuration/Google/StaticMaps/StaticMapsEngine.cs): `src/Shared/Configuration/Google/StaticMaps/StaticMapsEngine.cs`
- [Query parameters](https://github.com/grisu-noe/fullscreenbrowser/blob/main/src/Shared/Configuration/Google/QueryStringParametersList.cs): `src/Shared/Configuration/Google/QueryStringParametersList.cs`

### Other components

- **Kiosk operator**
- **Google Static Maps**

## Connections

- Kiosk operator → Config editor: edits settings (evidence: `src/Gui/Config-Gui/MainWindow.xaml.cs`)
- Config editor → Config view model: uses (evidence: `src/Gui/Config-Gui/MainWindow.xaml.cs`)
- Config view model → Browser configuration: edits configuration
- Application startup → Service registrations: initializes with (evidence: `src/Gui/FullscreenBrowser/Program.cs`)
- Application startup → Bootstrap container: starts services (evidence: `src/Shared/Utils/Bootstrapper/Bootstrapper.cs`)
- Service registrations → Bootstrap container: configures (evidence: `src/Gui/FullscreenBrowser/CustomBootstrapper/StructureMapRegistry.cs`)
- Bootstrap container → Startup tasks: runs (evidence: `src/Shared/Utils/Bootstrapper/Bootstrapper.cs`)
- Startup tasks → Window manager: initializes
- Startup tasks → Print controller: initializes
- Service registrations → Configuration loader: registers (evidence: `src/Gui/FullscreenBrowser/CustomBootstrapper/StructureMapRegistry.cs`)
- Window manager → Configuration loader: reads settings (evidence: `src/Gui/FullscreenBrowser/WindowManager.cs`)
- Window manager → Gecko browser: sets up browsers (evidence: `src/Gui/FullscreenBrowser/WindowManager.cs`)
- Window manager → Power management: requests power hold (evidence: `src/Gui/FullscreenBrowser/WindowManager.cs`)
- Window manager → Screen refresher: hides refresher (evidence: `src/Gui/FullscreenBrowser/WindowManager.cs`)
- Service registrations → HTTP server: registers (evidence: `src/Gui/FullscreenBrowser/CustomBootstrapper/StructureMapRegistry.cs`)
- HTTP server → HTTP request processor: dispatches requests
- Kiosk operator → Window manager: operates kiosk
- Print controller → Configuration loader: reads print settings (evidence: `src/Gui/FullscreenBrowser/Print/PrintController.cs`)
- Print controller → Print template view: builds document from (evidence: `src/Gui/FullscreenBrowser/Print/PrintController.cs`)
- Print controller → Emergency data: prints records (evidence: `src/Gui/FullscreenBrowser/Print/PrintController.cs`)
- Print controller → Print queue: uses queue (evidence: `src/Gui/FullscreenBrowser/Print/PrintController.cs`)
- Print controller → Window manager: gets browser cookies (evidence: `src/Gui/FullscreenBrowser/Print/PrintController.cs`)
- Static map engine → Static map request: serializes (evidence: `src/Shared/Configuration/Google/StaticMaps/StaticMapsEngine.cs`)
- Static map engine → Query parameters: builds parameters (evidence: `src/Shared/Configuration/Google/StaticMaps/StaticMapsEngine.cs`)
- Static map engine → Google Static Maps: creates map URL
- Print controller → Static map engine: requests map image
