# hibrahimboz/recordanalyzer architecture

> Architecture diagram of the GitHub repository hibrahimboz/recordanalyzer, 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/hibrahimboz/recordanalyzer
- Repository: https://github.com/hibrahimboz/recordanalyzer

## Overview

This tree contains several related but independently launched analysis products, rather than one shared application: a WPF record-analysis and mapping tool, a PDW analysis tool, a flight-report map/query tool, and an EDPOD IF command-line analyzer. The principal analyst workflow is to import or query records, analyze emitter/threat or geospatial characteristics, then inspect results in tables and maps. The sampled code confirms IF scanning and PDW service registration, plus SAKA row matching and database delegation; many other capabilities are visible only from filenames, so uncertain runtime wiring is omitted.

Main entry points: [`SakaRecordAnalyzer.WPF/Infrastructure/Data/DatabaseManager.cs`](https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Infrastructure/Data/DatabaseManager.cs) (DuckDB access), [`PDW_Analyzer/Infrastructure/DuckDbStore.cs`](https://github.com/hibrahimboz/recordanalyzer/blob/main/PDW_Analyzer/Infrastructure/DuckDbStore.cs) (PDW data store), [`PDW_Analyzer/Infrastructure/HPC/Services/HpcDataService.cs`](https://github.com/hibrahimboz/recordanalyzer/blob/main/PDW_Analyzer/Infrastructure/HPC/Services/HpcDataService.cs) (HPC analysis), [`Saka.If.Cli/Program.cs`](https://github.com/hibrahimboz/recordanalyzer/blob/main/Saka.If.Cli/Program.cs) (IF CLI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_saka["Record analysis"]
  node_saka_ui["Analysis UI<br/>[MainWindow.xaml.cs]"]
  node_saka_vm["Main view model<br/>[MainViewModel.cs]"]
  node_saka_import["Data import"]
  node_saka_db["DuckDB access<br/>[DatabaseManager.cs]"]
  node_saka_query["Record queries<br/>[QueryRepository.cs]"]
  node_saka_match["Row navigation"]
  node_saka_emitters["Emitter analysis"]
  node_saka_threat["Threat library"]
  node_saka_map["Map analysis<br/>[MapWindow.xaml.cs]"]
  node_saka_terrain["Terrain analysis"]
end

subgraph group_pdw["PDW analysis"]
  node_pdw_ui["PDW desktop UI<br/>[MainWindow.xaml.cs]"]
  node_pdw_vm["PDW view model<br/>[MainViewModel.cs]"]
  node_pdw_store[("PDW data store<br/>[DuckDbStore.cs]")]
  node_pdw_hpc["HPC analysis<br/>[HpcDataService.cs]"]
  node_pdw_deinterleave["Emitter finder"]
  node_pdw_library["Threat library"]
end

subgraph group_reports["Flight reports"]
  node_report_ui["Report map UI<br/>[MainWindow.xaml.cs]"]
  node_report_vm["Map view model<br/>[MapViewModel.cs]"]
  node_report_excel["Excel processing<br/>[ExcelProcessor.cs]"]
  node_report_db[("Flight-point store<br/>[DatabaseManager.cs]")]
end

subgraph group_if["EDPOD IF"]
  node_if_cli["IF CLI<br/>[Program.cs]"]
  node_if_store["IF scan store<br/>[EdpodIfStore.cs]"]
  node_if_analysis["Automatic analysis"]
  node_if_report["Report builder"]
end

subgraph group_shared["Shared analysis"]
  node_deinterleave["Deinterleaving algorithms"]
  node_threat_score["Threat scoring"]
end

node_analyst(("Analyst"))
node_if_user(("CLI user"))

node_analyst -->|"uses"| node_saka_ui
node_if_user -->|"runs"| node_if_cli
node_if_cli -->|"scans files"| node_if_store
node_saka_match -->|"queries rows"| node_saka_db
node_saka_db -->|"delegates queries"| node_saka_query
node_saka_vm -->|"accesses data"| node_saka_db
node_pdw_ui -->|"presents"| node_pdw_vm
node_pdw_store -->|"provides data"| node_pdw_hpc
node_pdw_hpc -->|"runs finder"| node_pdw_deinterleave
node_pdw_library -->|"uses repository"| node_pdw_store
node_report_ui -->|"presents"| node_report_vm
node_report_db -->|"serves map data"| node_report_vm

click node_saka_ui "https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Presentation/Views/Main/MainWindow.xaml.cs"
click node_saka_vm "https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Presentation/ViewModels/MainViewModel.cs"
click node_saka_import "https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Infrastructure/Data/ImportRepository.cs"
click node_saka_db "https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Infrastructure/Data/DatabaseManager.cs"
click node_saka_query "https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Infrastructure/Data/QueryRepository.cs"
click node_saka_match "https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Presentation/Services/NavigationManager.cs"
click node_saka_emitters "https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Application/EmitterFinderManager.cs"
click node_saka_threat "https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Presentation/ViewModels/ThreatLibraryViewModel.cs"
click node_saka_map "https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Presentation/Views/Map/MapWindow.xaml.cs"
click node_saka_terrain "https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Application/Terrain/ViewshedCalculator.cs"
click node_pdw_ui "https://github.com/hibrahimboz/recordanalyzer/blob/main/PDW_Analyzer/Presentation/Views/MainWindow.xaml.cs"
click node_pdw_vm "https://github.com/hibrahimboz/recordanalyzer/blob/main/PDW_Analyzer/Presentation/ViewModels/MainViewModel.cs"
click node_pdw_store "https://github.com/hibrahimboz/recordanalyzer/blob/main/PDW_Analyzer/Infrastructure/DuckDbStore.cs"
click node_pdw_hpc "https://github.com/hibrahimboz/recordanalyzer/blob/main/PDW_Analyzer/Infrastructure/HPC/Services/HpcDataService.cs"
click node_pdw_deinterleave "https://github.com/hibrahimboz/recordanalyzer/blob/main/PDW_Analyzer/Infrastructure/HPC/Algorithms/UnifiedEmitterFinderService.cs"
click node_pdw_library "https://github.com/hibrahimboz/recordanalyzer/blob/main/PDW_Analyzer/Application/ThreatLibraryService.cs"
click node_report_ui "https://github.com/hibrahimboz/recordanalyzer/blob/main/Rapor_Sorgu_Analiz.WPF/Presentation/Views/Main/MainWindow.xaml.cs"
click node_report_vm "https://github.com/hibrahimboz/recordanalyzer/blob/main/Rapor_Sorgu_Analiz.WPF/Presentation/ViewModels/MapViewModel.cs"
click node_report_excel "https://github.com/hibrahimboz/recordanalyzer/blob/main/Rapor_Sorgu_Analiz.WPF/Application/ExcelProcessor.cs"
click node_report_db "https://github.com/hibrahimboz/recordanalyzer/blob/main/Rapor_Sorgu_Analiz.WPF/Infrastructure/Data/DatabaseManager.cs"
click node_if_cli "https://github.com/hibrahimboz/recordanalyzer/blob/main/Saka.If.Cli/Program.cs"
click node_if_store "https://github.com/hibrahimboz/recordanalyzer/blob/main/Saka.If.Core/Io/EdpodIfStore.cs"
click node_if_analysis "https://github.com/hibrahimboz/recordanalyzer/blob/main/Saka.If.Core/Analysis/EdpodIfAutoAnalysis.cs"
click node_if_report "https://github.com/hibrahimboz/recordanalyzer/blob/main/Saka.If.Core/Report/EdpodIfReportBuilder.cs"
click node_deinterleave "https://github.com/hibrahimboz/recordanalyzer/blob/main/Saka.Pdw.Core/Infrastructure/HPC/Algorithms/UnifiedDeinterleaver.cs"
click node_threat_score "https://github.com/hibrahimboz/recordanalyzer/blob/main/Saka.Pdw.Core/Infrastructure/HPC/Algorithms/ThreatScoringEngine.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_saka_ui,node_saka_vm,node_saka_import,node_saka_db,node_saka_query,node_saka_match,node_saka_emitters,node_saka_threat,node_saka_map,node_saka_terrain,node_if_user toneBlue
class node_pdw_ui,node_pdw_vm,node_pdw_store,node_pdw_hpc,node_pdw_deinterleave,node_pdw_library toneAmber
class node_report_ui,node_report_vm,node_report_excel,node_report_db toneMint
class node_if_cli,node_if_store,node_if_analysis,node_if_report toneRose
class node_deinterleave,node_threat_score,node_analyst toneIndigo
```

## Components

### Record analysis

- [Analysis UI](https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Presentation/Views/Main/MainWindow.xaml.cs): `SakaRecordAnalyzer.WPF/Presentation/Views/Main/MainWindow.xaml.cs`
- [Main view model](https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Presentation/ViewModels/MainViewModel.cs): `SakaRecordAnalyzer.WPF/Presentation/ViewModels/MainViewModel.cs`
- [Data import](https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Infrastructure/Data/ImportRepository.cs): `SakaRecordAnalyzer.WPF/Infrastructure/Data/ImportRepository.cs`
- [DuckDB access](https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Infrastructure/Data/DatabaseManager.cs): `SakaRecordAnalyzer.WPF/Infrastructure/Data/DatabaseManager.cs`
- [Record queries](https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Infrastructure/Data/QueryRepository.cs): `SakaRecordAnalyzer.WPF/Infrastructure/Data/QueryRepository.cs`
- [Row navigation](https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Presentation/Services/NavigationManager.cs): `SakaRecordAnalyzer.WPF/Presentation/Services/NavigationManager.cs`
- [Emitter analysis](https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Application/EmitterFinderManager.cs): `SakaRecordAnalyzer.WPF/Application/EmitterFinderManager.cs`
- [Threat library](https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Presentation/ViewModels/ThreatLibraryViewModel.cs): `SakaRecordAnalyzer.WPF/Presentation/ViewModels/ThreatLibraryViewModel.cs`
- [Map analysis](https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Presentation/Views/Map/MapWindow.xaml.cs): `SakaRecordAnalyzer.WPF/Presentation/Views/Map/MapWindow.xaml.cs`
- [Terrain analysis](https://github.com/hibrahimboz/recordanalyzer/blob/main/SakaRecordAnalyzer.WPF/Application/Terrain/ViewshedCalculator.cs): `SakaRecordAnalyzer.WPF/Application/Terrain/ViewshedCalculator.cs`

### PDW analysis

- [PDW desktop UI](https://github.com/hibrahimboz/recordanalyzer/blob/main/PDW_Analyzer/Presentation/Views/MainWindow.xaml.cs): `PDW_Analyzer/Presentation/Views/MainWindow.xaml.cs`
- [PDW view model](https://github.com/hibrahimboz/recordanalyzer/blob/main/PDW_Analyzer/Presentation/ViewModels/MainViewModel.cs): `PDW_Analyzer/Presentation/ViewModels/MainViewModel.cs`
- [PDW data store](https://github.com/hibrahimboz/recordanalyzer/blob/main/PDW_Analyzer/Infrastructure/DuckDbStore.cs): `PDW_Analyzer/Infrastructure/DuckDbStore.cs`
- [HPC analysis](https://github.com/hibrahimboz/recordanalyzer/blob/main/PDW_Analyzer/Infrastructure/HPC/Services/HpcDataService.cs): `PDW_Analyzer/Infrastructure/HPC/Services/HpcDataService.cs`
- [Emitter finder](https://github.com/hibrahimboz/recordanalyzer/blob/main/PDW_Analyzer/Infrastructure/HPC/Algorithms/UnifiedEmitterFinderService.cs): `PDW_Analyzer/Infrastructure/HPC/Algorithms/UnifiedEmitterFinderService.cs`
- [Threat library](https://github.com/hibrahimboz/recordanalyzer/blob/main/PDW_Analyzer/Application/ThreatLibraryService.cs): `PDW_Analyzer/Application/ThreatLibraryService.cs`

### Flight reports

- [Report map UI](https://github.com/hibrahimboz/recordanalyzer/blob/main/Rapor_Sorgu_Analiz.WPF/Presentation/Views/Main/MainWindow.xaml.cs): `Rapor_Sorgu_Analiz.WPF/Presentation/Views/Main/MainWindow.xaml.cs`
- [Map view model](https://github.com/hibrahimboz/recordanalyzer/blob/main/Rapor_Sorgu_Analiz.WPF/Presentation/ViewModels/MapViewModel.cs): `Rapor_Sorgu_Analiz.WPF/Presentation/ViewModels/MapViewModel.cs`
- [Excel processing](https://github.com/hibrahimboz/recordanalyzer/blob/main/Rapor_Sorgu_Analiz.WPF/Application/ExcelProcessor.cs): `Rapor_Sorgu_Analiz.WPF/Application/ExcelProcessor.cs`
- [Flight-point store](https://github.com/hibrahimboz/recordanalyzer/blob/main/Rapor_Sorgu_Analiz.WPF/Infrastructure/Data/DatabaseManager.cs): `Rapor_Sorgu_Analiz.WPF/Infrastructure/Data/DatabaseManager.cs`

### EDPOD IF

- [IF CLI](https://github.com/hibrahimboz/recordanalyzer/blob/main/Saka.If.Cli/Program.cs): `Saka.If.Cli/Program.cs`
- [IF scan store](https://github.com/hibrahimboz/recordanalyzer/blob/main/Saka.If.Core/Io/EdpodIfStore.cs): `Saka.If.Core/Io/EdpodIfStore.cs`
- [Automatic analysis](https://github.com/hibrahimboz/recordanalyzer/blob/main/Saka.If.Core/Analysis/EdpodIfAutoAnalysis.cs): `Saka.If.Core/Analysis/EdpodIfAutoAnalysis.cs`
- [Report builder](https://github.com/hibrahimboz/recordanalyzer/blob/main/Saka.If.Core/Report/EdpodIfReportBuilder.cs): `Saka.If.Core/Report/EdpodIfReportBuilder.cs`

### Shared analysis

- [Deinterleaving algorithms](https://github.com/hibrahimboz/recordanalyzer/blob/main/Saka.Pdw.Core/Infrastructure/HPC/Algorithms/UnifiedDeinterleaver.cs): `Saka.Pdw.Core/Infrastructure/HPC/Algorithms/UnifiedDeinterleaver.cs`
- [Threat scoring](https://github.com/hibrahimboz/recordanalyzer/blob/main/Saka.Pdw.Core/Infrastructure/HPC/Algorithms/ThreatScoringEngine.cs): `Saka.Pdw.Core/Infrastructure/HPC/Algorithms/ThreatScoringEngine.cs`

### Other components

- **Analyst**
- **CLI user**

## Connections

- Analyst → Analysis UI: uses
- CLI user → IF CLI: runs
- IF CLI → IF scan store: scans files
- Row navigation → DuckDB access: queries rows
- DuckDB access → Record queries: delegates queries
- Main view model → DuckDB access: accesses data
- PDW desktop UI → PDW view model: presents
- PDW data store → HPC analysis: provides data
- HPC analysis → Emitter finder: runs finder
- Threat library → PDW data store: uses repository
- Report map UI → Map view model: presents
- Flight-point store → Map view model: serves map data
