# baaron4/gw2-elite-insights-parser architecture

> Architecture diagram of the GitHub repository baaron4/gw2-elite-insights-parser, 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/baaron4/gw2-elite-insights-parser
- Repository: https://github.com/baaron4/gw2-elite-insights-parser

## Overview

GW2 Elite Insights parses Guild Wars 2 EVTC logs into reports and structured data, with desktop and CLI entry points. The main workflow is selecting or supplying logs, parsing combat events, and opening generated output; settings control that operation. Report generation, event inspection, API-backed metadata, uploads, and updates are additional capabilities. The tree and README establish these product stages, but sampled source does not show the central parser service’s full call chain, so uncertain internal wiring is omitted.

Main entry points: [`GW2EI.Executables/GW2EI.Applications/GW2EIParserAvalonia/Services/ParserService.cs`](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Executables/GW2EI.Applications/GW2EIParserAvalonia/Services/ParserService.cs) (Parser service), [`GW2EI.Executables/GW2EI.Applications/GW2EIParserAvalonia/Views/MainWindow.axaml.cs`](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Executables/GW2EI.Applications/GW2EIParserAvalonia/Views/MainWindow.axaml.cs) (Desktop UI), [`GW2EI.Executables/GW2EI.Applications/GW2EIParserCLI/Program.cs`](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Executables/GW2EI.Applications/GW2EIParserCLI/Program.cs) (CLI), [`GW2EI.Library/GW2EI.Services/GW2EIBuilders/JsonModels/JsonLogBuilder.cs`](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Services/GW2EIBuilders/JsonModels/JsonLogBuilder.cs) (JSON output)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User entry points"]
  node_desktop["Desktop UI"]
  node_cli["CLI<br/>[Program.cs]"]
  node_settings["Settings"]
end

subgraph group_parse["Combat parsing"]
  node_parser_service["Parser service<br/>[ParserService.cs]"]
  node_evt_parser["EVTC parser"]
  node_combat_model["Combat analysis<br/>[EIData]"]
end

subgraph group_output["Report outputs"]
  node_json_builder["JSON output<br/>[JsonLogBuilder.cs]"]
  node_html_builder["HTML reports<br/>[HTMLBuilder.cs]"]
  node_csv_builder["CSV output<br/>[CSVBuilder.cs]"]
  node_raw_builder["Raw output"]
  node_json_models["JSON schema<br/>[JsonLog.cs]"]
  node_result["Generated files"]
end

subgraph group_integrations["External services"]
  node_gw2_api["GW2 API cache"]
  node_dps_report["dps.report"]
  node_wingman["Wingman"]
  node_discord["Discord webhook"]
end

subgraph group_support["Tools and inspection"]
  node_inspector["Event inspector<br/>[EventInspector.cs]"]
  node_updater["Release updater<br/>[Updater.cs]"]
end

node_user(("User"))
node_github["GitHub releases"]

node_user -->|"select logs"| node_desktop
node_user -->|"supply logs"| node_cli
node_desktop -->|"request parsing"| node_parser_service
node_cli -->|"request parsing"| node_parser_service
node_desktop -->|"configure"| node_settings
node_cli -->|"load config"| node_settings
node_parser_service -->|"parse logs"| node_evt_parser
node_evt_parser -->|"analyze events"| node_combat_model
node_parser_service -->|"build output"| node_json_builder
node_parser_service -->|"build output"| node_html_builder
node_parser_service -->|"build output"| node_csv_builder
node_parser_service -->|"build output"| node_raw_builder
node_json_builder -->|"serialize as"| node_json_models
node_json_builder -->|"write files"| node_result
node_html_builder -->|"write files"| node_result
node_csv_builder -->|"write files"| node_result
node_raw_builder -->|"write files"| node_result
node_user -->|"inspect events"| node_inspector
node_inspector -->|"inspect log data"| node_evt_parser
node_parser_service -.->|"use metadata"| node_gw2_api
node_parser_service -.->|"upload reports"| node_dps_report
node_parser_service -.->|"upload logs"| node_wingman
node_parser_service -.->|"send notifications"| node_discord
node_updater -.->|"check releases"| node_github

click node_desktop "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Executables/GW2EI.Applications/GW2EIParserAvalonia/Views/MainWindow.axaml.cs"
click node_cli "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Executables/GW2EI.Applications/GW2EIParserCLI/Program.cs"
click node_settings "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Services/GW2EIParserCommons/Settings/CustomSettingsManager.cs"
click node_parser_service "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Executables/GW2EI.Applications/GW2EIParserAvalonia/Services/ParserService.cs"
click node_evt_parser "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Services/GW2EIEvtcParser/ParserController.cs"
click node_combat_model "https://github.com/baaron4/gw2-elite-insights-parser/tree/master/GW2EI.Library/GW2EI.Services/GW2EIEvtcParser/EIData"
click node_json_builder "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Services/GW2EIBuilders/JsonModels/JsonLogBuilder.cs"
click node_html_builder "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Services/GW2EIBuilders/HTMLBuilder.cs"
click node_csv_builder "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Services/GW2EIBuilders/CSVBuilder.cs"
click node_raw_builder "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Services/GW2EIBuilders/RawFormatBuilder.cs"
click node_json_models "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Models/GW2EIJSON/JsonLog.cs"
click node_inspector "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Executables/GW2EI.Applications/GW2EIParserAvalonia/Inspector/Services/EventInspector.cs"
click node_gw2_api "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Repositories/GW2EIGW2API/GW2APIController.cs"
click node_dps_report "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Repositories/GW2EIDPSReport/DPSReportController.cs"
click node_wingman "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Repositories/GW2EIWingman/WingmanController.cs"
click node_discord "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Repositories/GW2EIDiscord/WebhookController.cs"
click node_updater "https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Repositories/GW2EIUpdater/Updater.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_desktop,node_cli,node_settings,node_user toneBlue
class node_parser_service,node_evt_parser,node_combat_model toneAmber
class node_json_builder,node_html_builder,node_csv_builder,node_raw_builder,node_json_models,node_result toneMint
class node_gw2_api,node_dps_report,node_wingman,node_discord toneRose
class node_inspector,node_updater,node_github toneIndigo
```

## Components

### User entry points

- [Desktop UI](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Executables/GW2EI.Applications/GW2EIParserAvalonia/Views/MainWindow.axaml.cs): `GW2EI.Executables/GW2EI.Applications/GW2EIParserAvalonia/Views/MainWindow.axaml.cs`
- [CLI](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Executables/GW2EI.Applications/GW2EIParserCLI/Program.cs): `GW2EI.Executables/GW2EI.Applications/GW2EIParserCLI/Program.cs`
- [Settings](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Services/GW2EIParserCommons/Settings/CustomSettingsManager.cs): `GW2EI.Library/GW2EI.Services/GW2EIParserCommons/Settings/CustomSettingsManager.cs`

### Combat parsing

- [Parser service](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Executables/GW2EI.Applications/GW2EIParserAvalonia/Services/ParserService.cs): `GW2EI.Executables/GW2EI.Applications/GW2EIParserAvalonia/Services/ParserService.cs`
- [EVTC parser](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Services/GW2EIEvtcParser/ParserController.cs): `GW2EI.Library/GW2EI.Services/GW2EIEvtcParser/ParserController.cs`
- [Combat analysis](https://github.com/baaron4/gw2-elite-insights-parser/tree/master/GW2EI.Library/GW2EI.Services/GW2EIEvtcParser/EIData): `GW2EI.Library/GW2EI.Services/GW2EIEvtcParser/EIData`

### Report outputs

- [JSON output](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Services/GW2EIBuilders/JsonModels/JsonLogBuilder.cs): `GW2EI.Library/GW2EI.Services/GW2EIBuilders/JsonModels/JsonLogBuilder.cs`
- [HTML reports](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Services/GW2EIBuilders/HTMLBuilder.cs): `GW2EI.Library/GW2EI.Services/GW2EIBuilders/HTMLBuilder.cs`
- [CSV output](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Services/GW2EIBuilders/CSVBuilder.cs): `GW2EI.Library/GW2EI.Services/GW2EIBuilders/CSVBuilder.cs`
- [Raw output](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Services/GW2EIBuilders/RawFormatBuilder.cs): `GW2EI.Library/GW2EI.Services/GW2EIBuilders/RawFormatBuilder.cs`
- [JSON schema](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Models/GW2EIJSON/JsonLog.cs): `GW2EI.Library/GW2EI.Models/GW2EIJSON/JsonLog.cs`
- **Generated files**

### External services

- [GW2 API cache](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Repositories/GW2EIGW2API/GW2APIController.cs): `GW2EI.Library/GW2EI.Repositories/GW2EIGW2API/GW2APIController.cs`
- [dps.report](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Repositories/GW2EIDPSReport/DPSReportController.cs): `GW2EI.Library/GW2EI.Repositories/GW2EIDPSReport/DPSReportController.cs`
- [Wingman](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Repositories/GW2EIWingman/WingmanController.cs): `GW2EI.Library/GW2EI.Repositories/GW2EIWingman/WingmanController.cs`
- [Discord webhook](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Repositories/GW2EIDiscord/WebhookController.cs): `GW2EI.Library/GW2EI.Repositories/GW2EIDiscord/WebhookController.cs`

### Tools and inspection

- [Event inspector](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Executables/GW2EI.Applications/GW2EIParserAvalonia/Inspector/Services/EventInspector.cs): `GW2EI.Executables/GW2EI.Applications/GW2EIParserAvalonia/Inspector/Services/EventInspector.cs`
- [Release updater](https://github.com/baaron4/gw2-elite-insights-parser/blob/master/GW2EI.Library/GW2EI.Repositories/GW2EIUpdater/Updater.cs): `GW2EI.Library/GW2EI.Repositories/GW2EIUpdater/Updater.cs`

### Other components

- **User**
- **GitHub releases**

## Connections

- User → Desktop UI: select logs
- User → CLI: supply logs
- Desktop UI → Parser service: request parsing
- CLI → Parser service: request parsing
- Desktop UI → Settings: configure
- CLI → Settings: load config
- Parser service → EVTC parser: parse logs
- EVTC parser → Combat analysis: analyze events
- Parser service → JSON output: build output
- Parser service → HTML reports: build output
- Parser service → CSV output: build output
- Parser service → Raw output: build output
- JSON output → JSON schema: serialize as
- JSON output → Generated files: write files
- HTML reports → Generated files: write files
- CSV output → Generated files: write files
- Raw output → Generated files: write files
- User → Event inspector: inspect events
- Event inspector → EVTC parser: inspect log data
- Parser service → GW2 API cache: use metadata
- Parser service → dps.report: upload reports
- Parser service → Wingman: upload logs
- Parser service → Discord webhook: send notifications
- Release updater → GitHub releases: check releases
