# led-n/fortnite-chestcounter architecture

> Architecture diagram of the GitHub repository led-n/fortnite-chestcounter, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/led-n/fortnite-chestcounter
- Repository: https://github.com/led-n/fortnite-chestcounter

## Overview

Chest Counter is a Windows desktop tool that analyzes Fortnite’s saved match replays, tracks opened chests and treasure rewards, and presents the history in an in-game overlay and browser report. The documented workflow is replay-folder monitoring, replay parsing and chest analysis, persistent match tracking, then UI/report rendering. The source index confirms key parser and app references; unsampled subsystems are included where README capabilities establish their role, but their internal call paths are not inferred.

Main entry points: [`src/ChestCounter/Program.cs`](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Program.cs) (App coordinator), [`src/ChestCounter/ReplayAnalyzer.cs`](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/ReplayAnalyzer.cs) (Replay analyzer), [`src/ChestCounter/Tracker.cs`](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Tracker.cs) (Match tracker), [`src/ChestCounter/NativeOverlay.cs`](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/NativeOverlay.cs) (Game overlay)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Desktop App"]
  node_program["App coordinator<br/>[Program.cs]"]
  node_watch["Replay watcher<br/>[FortniteWatch.cs]"]
  node_tracker["Match tracker<br/>[Tracker.cs]"]
  node_store[("History store<br/>[Models.cs]")]
  node_profiles["Profiles<br/>[Profiles.cs]"]
  node_updater["Version updater<br/>[Updater.cs]"]
  node_tray["Notification tray<br/>[Tray.cs]"]
end

subgraph group_analysis["Replay Analysis"]
  node_analyzer["Replay analyzer<br/>[ReplayAnalyzer.cs]"]
  node_chest["Chest exports<br/>[Chest.cs]"]
  node_records["Match records<br/>[Models.cs]"]
end

subgraph group_presentation["User Views"]
  node_console["Console UI<br/>[ConsoleUi.cs]"]
  node_overlay["Game overlay<br/>[NativeOverlay.cs]"]
  node_overlaymodel["Overlay state<br/>[OverlayModel.cs]"]
  node_report["History report<br/>[ReportWriter.cs]"]
end

subgraph group_reader["Replay Libraries"]
  node_freader["Fortnite replay reader"]
  node_builder["Replay builder"]
  node_core["Unreal replay parser<br/>[ReplayReader.cs]"]
  node_netfields["Net-field parser<br/>[NetFieldParser.cs]"]
end

node_player(("Fortnite player"))

node_player -.->|"records replays"| node_watch
node_program -->|"starts monitoring"| node_watch
node_program -->|"coordinates tracking"| node_tracker
node_watch -.->|"notifies replay changes"| node_tracker
node_tracker -->|"analyzes replay"| node_analyzer
node_analyzer -->|"parses replay"| node_freader
node_freader -->|"builds replay data"| node_builder
node_freader -->|"extends parser"| node_core
node_core -->|"parses fields"| node_netfields
node_analyzer -->|"reads chest exports"| node_chest
node_analyzer -->|"produces match data"| node_records
node_tracker -.->|"persists history"| node_store
node_program -->|"loads settings and data"| node_store
node_program -->|"drives interface"| node_console
node_program -->|"controls overlay"| node_overlay
node_overlay -->|"renders state"| node_overlaymodel
node_program -->|"generates report"| node_report
node_report -->|"reads match history"| node_records
node_program -->|"manages profiles"| node_profiles
node_program -->|"manages tray"| node_tray
node_program -->|"checks updates"| node_updater
node_report -.->|"opens browser report"| node_player
node_overlay -.->|"shows match figures"| node_player

click node_program "https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Program.cs"
click node_watch "https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/FortniteWatch.cs"
click node_tracker "https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Tracker.cs"
click node_store "https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Models.cs"
click node_profiles "https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Profiles.cs"
click node_updater "https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Updater.cs"
click node_tray "https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Tray.cs"
click node_analyzer "https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/ReplayAnalyzer.cs"
click node_chest "https://github.com/led-n/fortnite-chestcounter/blob/main/lib/FortniteReplayReader/Models/NetFieldExports/Items/Chest.cs"
click node_records "https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Models.cs"
click node_console "https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/ConsoleUi.cs"
click node_overlay "https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/NativeOverlay.cs"
click node_overlaymodel "https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/OverlayModel.cs"
click node_report "https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/ReportWriter.cs"
click node_freader "https://github.com/led-n/fortnite-chestcounter/blob/main/lib/FortniteReplayReader/FortniteReplayReader.cs"
click node_builder "https://github.com/led-n/fortnite-chestcounter/blob/main/lib/FortniteReplayReader/FortniteReplayBuilder.cs"
click node_core "https://github.com/led-n/fortnite-chestcounter/blob/main/lib/Unreal.Core/ReplayReader.cs"
click node_netfields "https://github.com/led-n/fortnite-chestcounter/blob/main/lib/Unreal.Core/NetFieldParser.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_program,node_watch,node_tracker,node_store,node_profiles,node_updater,node_tray toneBlue
class node_analyzer,node_chest,node_records toneAmber
class node_console,node_overlay,node_overlaymodel,node_report toneMint
class node_freader,node_builder,node_core,node_netfields toneRose
class node_player toneIndigo
```

## Components

### Desktop App

- [App coordinator](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Program.cs): `src/ChestCounter/Program.cs`
- [Replay watcher](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/FortniteWatch.cs): `src/ChestCounter/FortniteWatch.cs`
- [Match tracker](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Tracker.cs): `src/ChestCounter/Tracker.cs`
- [History store](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Models.cs): `src/ChestCounter/Models.cs`
- [Profiles](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Profiles.cs): `src/ChestCounter/Profiles.cs`
- [Version updater](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Updater.cs): `src/ChestCounter/Updater.cs`
- [Notification tray](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Tray.cs): `src/ChestCounter/Tray.cs`

### Replay Analysis

- [Replay analyzer](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/ReplayAnalyzer.cs): `src/ChestCounter/ReplayAnalyzer.cs`
- [Chest exports](https://github.com/led-n/fortnite-chestcounter/blob/main/lib/FortniteReplayReader/Models/NetFieldExports/Items/Chest.cs): `lib/FortniteReplayReader/Models/NetFieldExports/Items/Chest.cs`
- [Match records](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/Models.cs): `src/ChestCounter/Models.cs`

### User Views

- [Console UI](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/ConsoleUi.cs): `src/ChestCounter/ConsoleUi.cs`
- [Game overlay](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/NativeOverlay.cs): `src/ChestCounter/NativeOverlay.cs`
- [Overlay state](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/OverlayModel.cs): `src/ChestCounter/OverlayModel.cs`
- [History report](https://github.com/led-n/fortnite-chestcounter/blob/main/src/ChestCounter/ReportWriter.cs): `src/ChestCounter/ReportWriter.cs`

### Replay Libraries

- [Fortnite replay reader](https://github.com/led-n/fortnite-chestcounter/blob/main/lib/FortniteReplayReader/FortniteReplayReader.cs): `lib/FortniteReplayReader/FortniteReplayReader.cs`
- [Replay builder](https://github.com/led-n/fortnite-chestcounter/blob/main/lib/FortniteReplayReader/FortniteReplayBuilder.cs): `lib/FortniteReplayReader/FortniteReplayBuilder.cs`
- [Unreal replay parser](https://github.com/led-n/fortnite-chestcounter/blob/main/lib/Unreal.Core/ReplayReader.cs): `lib/Unreal.Core/ReplayReader.cs`
- [Net-field parser](https://github.com/led-n/fortnite-chestcounter/blob/main/lib/Unreal.Core/NetFieldParser.cs): `lib/Unreal.Core/NetFieldParser.cs`

### Other components

- **Fortnite player**

## Connections

- Fortnite player → Replay watcher: records replays
- App coordinator → Replay watcher: starts monitoring (evidence: `src/ChestCounter/Program.cs`)
- App coordinator → Match tracker: coordinates tracking (evidence: `src/ChestCounter/Program.cs`)
- Replay watcher → Match tracker: notifies replay changes
- Match tracker → Replay analyzer: analyzes replay (evidence: `src/ChestCounter/ReplayAnalyzer.cs`)
- Replay analyzer → Fortnite replay reader: parses replay (evidence: `src/ChestCounter/ReplayAnalyzer.cs`)
- Fortnite replay reader → Replay builder: builds replay data (evidence: `lib/FortniteReplayReader/FortniteReplayReader.cs`)
- Fortnite replay reader → Unreal replay parser: extends parser (evidence: `lib/FortniteReplayReader/FortniteReplayReader.cs`)
- Unreal replay parser → Net-field parser: parses fields (evidence: `lib/Unreal.Core/ReplayReader.cs`)
- Replay analyzer → Chest exports: reads chest exports (evidence: `src/ChestCounter/ReplayAnalyzer.cs`)
- Replay analyzer → Match records: produces match data (evidence: `src/ChestCounter/Models.cs`)
- Match tracker → History store: persists history
- App coordinator → History store: loads settings and data (evidence: `src/ChestCounter/Program.cs`)
- App coordinator → Console UI: drives interface (evidence: `src/ChestCounter/Program.cs`)
- App coordinator → Game overlay: controls overlay (evidence: `src/ChestCounter/Program.cs`)
- Game overlay → Overlay state: renders state (evidence: `src/ChestCounter/NativeOverlay.cs`)
- App coordinator → History report: generates report (evidence: `src/ChestCounter/Program.cs`)
- History report → Match records: reads match history (evidence: `src/ChestCounter/ReportWriter.cs`)
- App coordinator → Profiles: manages profiles (evidence: `src/ChestCounter/Program.cs`)
- App coordinator → Notification tray: manages tray (evidence: `src/ChestCounter/Program.cs`)
- App coordinator → Version updater: checks updates (evidence: `src/ChestCounter/Program.cs`)
- History report → Fortnite player: opens browser report
- Game overlay → Fortnite player: shows match figures
