# mark-alexander-hub/winvitals architecture

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

- Interactive diagram: https://gitdiagram.com/mark-alexander-hub/winvitals
- Repository: https://github.com/mark-alexander-hub/winvitals

## Overview

WinVitals is a Windows PC diagnosis and repair tool. Its main workflow is to scan selected system areas, turn observations into findings, explain them in the interface or an HTML report, and offer previewed, reversible repairs with a verified restore point and persistent undo. The graph also preserves the documented command-line scan and weekly scheduled check-up. Some UI and orchestration source was not sampled, so uncertain internal wiring is omitted; capability nodes use exact paths from the tree.

Main entry points: [`src/WinVitals.App/Views/ResultsView.xaml.cs`](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/Views/ResultsView.xaml.cs) (Findings and actions), [`src/WinVitals.Core/Collectors`](https://github.com/mark-alexander-hub/winvitals/tree/main/src/WinVitals.Core/Collectors) (System collectors), [`src/WinVitals.Core/Core/Collector.cs`](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Core/Collector.cs) (Scan runner), [`src/WinVitals.Core/Remediation/RepairSession.cs`](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Remediation/RepairSession.cs) (Repair session)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["User experience"]
  node_app_entry["Application entry<br/>[App.xaml.cs]"]
  node_main_window["Main window<br/>[MainWindow.xaml.cs]"]
  node_home["Home dashboard<br/>[HomeView.xaml.cs]"]
  node_scan_view["Scan experience<br/>[ScanView.xaml.cs]"]
  node_results["Findings and actions"]
  node_cli["Command-line scan<br/>[Cli.cs]"]
end

subgraph group_diagnosis["PC diagnosis"]
  node_playbooks["Symptom playbooks<br/>[Playbook.cs]"]
  node_scan_runner["Scan runner<br/>[Collector.cs]"]
  node_collectors["System collectors<br/>[Collectors]"]
  node_system_checks["System checks<br/>[SystemCollector.cs]"]
  node_power_checks["Power and sleep<br/>[PowerCollector.cs]"]
  node_storage_checks["Storage checks"]
  node_other_checks["Other check modules<br/>[Collectors]"]
end

subgraph group_repair["Repair and undo"]
  node_fix_catalog["Repair catalog<br/>[FixCatalog.cs]"]
  node_repair_session["Repair session<br/>[RepairSession.cs]"]
  node_fixes["Repair actions<br/>[Fixes]"]
  node_restore_guard["Restore-point guard"]
  node_undo_journal[("Undo journal<br/>[UndoJournal.cs]")]
  node_startup_manager["Startup manager<br/>[StartupManager.cs]"]
end

subgraph group_reporting["Reports and scheduling"]
  node_html_report["HTML report<br/>[HtmlReport.cs]"]
  node_scheduler["Weekly check-up<br/>[Scheduler.cs]"]
  node_scheduled_state["Scheduled summary<br/>[SpeedupSnapshot.cs]"]
end

subgraph group_core["Shared runtime"]
  node_findings["Scan findings<br/>[Model.cs]"]
  node_redactor["Report redaction<br/>[Redactor.cs]"]
  node_event_log["Event log reader<br/>[EventLog.cs]"]
  node_shell["Windows command access<br/>[Shell.cs]"]
  node_wmi["WMI access<br/>[Wmi.cs]"]
end

node_user(("PC owner"))
node_windows[("Windows system")]

node_user -->|"starts"| node_app_entry
node_app_entry -->|"opens interface"| node_main_window
node_app_entry -->|"dispatches arguments"| node_cli
node_user -->|"requests check-up"| node_home
node_home -->|"starts scan"| node_scan_view
node_scan_view -->|"selects checks"| node_playbooks
node_playbooks -->|"configures scan"| node_scan_runner
node_cli -->|"runs scan"| node_scan_runner
node_scan_runner -->|"runs modules"| node_collectors
node_collectors -->|"includes"| node_system_checks
node_collectors -->|"includes"| node_power_checks
node_collectors -->|"includes"| node_storage_checks
node_collectors -->|"includes"| node_other_checks
node_scan_runner -->|"builds results"| node_findings
node_scan_view -->|"shows findings"| node_results
node_results -->|"looks up repairs"| node_fix_catalog
node_results -->|"applies confirmed fixes"| node_repair_session
node_repair_session -->|"prepares safety net"| node_restore_guard
node_repair_session -->|"runs repairs"| node_fixes
node_repair_session -->|"records undo"| node_undo_journal
node_results -->|"manages sign-in items"| node_startup_manager
node_cli -->|"writes report"| node_html_report
node_results -->|"exports report"| node_html_report
node_scan_runner -->|"redacts findings"| node_redactor
node_home -->|"configures weekly scan"| node_scheduler
node_scheduler -->|"updates summary"| node_scheduled_state
node_power_checks -->|"reads events"| node_event_log
node_storage_checks -->|"runs system commands"| node_shell
node_power_checks -->|"runs system commands"| node_shell
node_system_checks -->|"queries Windows"| node_wmi
node_storage_checks -->|"queries Windows"| node_wmi
node_shell -->|"reads or changes"| node_windows
node_wmi -->|"queries"| node_windows
node_event_log -->|"reads logs"| node_windows
node_restore_guard -->|"creates restore point"| node_windows
node_undo_journal -->|"persists undo data"| node_windows
node_startup_manager -->|"reads and changes startup"| node_windows

click node_app_entry "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/App.xaml.cs"
click node_main_window "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/MainWindow.xaml.cs"
click node_home "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/Views/HomeView.xaml.cs"
click node_scan_view "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/Views/ScanView.xaml.cs"
click node_results "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/Views/ResultsView.xaml.cs"
click node_cli "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/Cli.cs"
click node_playbooks "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Core/Playbook.cs"
click node_scan_runner "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Core/Collector.cs"
click node_collectors "https://github.com/mark-alexander-hub/winvitals/tree/main/src/WinVitals.Core/Collectors"
click node_system_checks "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Collectors/SystemCollector.cs"
click node_power_checks "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Collectors/PowerCollector.cs"
click node_storage_checks "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Collectors/StorageCollector.cs"
click node_other_checks "https://github.com/mark-alexander-hub/winvitals/tree/main/src/WinVitals.Core/Collectors"
click node_findings "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Core/Model.cs"
click node_fix_catalog "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Remediation/FixCatalog.cs"
click node_repair_session "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Remediation/RepairSession.cs"
click node_fixes "https://github.com/mark-alexander-hub/winvitals/tree/main/src/WinVitals.Core/Remediation/Fixes"
click node_restore_guard "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Remediation/RestorePointGuard.cs"
click node_undo_journal "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Remediation/UndoJournal.cs"
click node_startup_manager "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Remediation/StartupManager.cs"
click node_html_report "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Report/HtmlReport.cs"
click node_redactor "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Core/Redactor.cs"
click node_scheduler "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/Scheduler.cs"
click node_scheduled_state "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/SpeedupSnapshot.cs"
click node_event_log "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Core/EventLog.cs"
click node_shell "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Core/Shell.cs"
click node_wmi "https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Core/Wmi.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_app_entry,node_main_window,node_home,node_scan_view,node_results,node_cli toneBlue
class node_playbooks,node_scan_runner,node_collectors,node_system_checks,node_power_checks,node_storage_checks,node_other_checks,node_windows toneAmber
class node_fix_catalog,node_repair_session,node_fixes,node_restore_guard,node_undo_journal,node_startup_manager toneMint
class node_html_report,node_scheduler,node_scheduled_state toneRose
class node_findings,node_redactor,node_event_log,node_shell,node_wmi,node_user toneIndigo
```

## Components

### User experience

- [Application entry](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/App.xaml.cs): `src/WinVitals.App/App.xaml.cs`
- [Main window](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/MainWindow.xaml.cs): `src/WinVitals.App/MainWindow.xaml.cs`
- [Home dashboard](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/Views/HomeView.xaml.cs): `src/WinVitals.App/Views/HomeView.xaml.cs`
- [Scan experience](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/Views/ScanView.xaml.cs): `src/WinVitals.App/Views/ScanView.xaml.cs`
- [Findings and actions](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/Views/ResultsView.xaml.cs): `src/WinVitals.App/Views/ResultsView.xaml.cs`
- [Command-line scan](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/Cli.cs): `src/WinVitals.App/Cli.cs`

### PC diagnosis

- [Symptom playbooks](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Core/Playbook.cs): `src/WinVitals.Core/Core/Playbook.cs`
- [Scan runner](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Core/Collector.cs): `src/WinVitals.Core/Core/Collector.cs`
- [System collectors](https://github.com/mark-alexander-hub/winvitals/tree/main/src/WinVitals.Core/Collectors): `src/WinVitals.Core/Collectors`
- [System checks](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Collectors/SystemCollector.cs): `src/WinVitals.Core/Collectors/SystemCollector.cs`
- [Power and sleep](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Collectors/PowerCollector.cs): `src/WinVitals.Core/Collectors/PowerCollector.cs`
- [Storage checks](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Collectors/StorageCollector.cs): `src/WinVitals.Core/Collectors/StorageCollector.cs`
- [Other check modules](https://github.com/mark-alexander-hub/winvitals/tree/main/src/WinVitals.Core/Collectors): `src/WinVitals.Core/Collectors`

### Repair and undo

- [Repair catalog](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Remediation/FixCatalog.cs): `src/WinVitals.Core/Remediation/FixCatalog.cs`
- [Repair session](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Remediation/RepairSession.cs): `src/WinVitals.Core/Remediation/RepairSession.cs`
- [Repair actions](https://github.com/mark-alexander-hub/winvitals/tree/main/src/WinVitals.Core/Remediation/Fixes): `src/WinVitals.Core/Remediation/Fixes`
- [Restore-point guard](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Remediation/RestorePointGuard.cs): `src/WinVitals.Core/Remediation/RestorePointGuard.cs`
- [Undo journal](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Remediation/UndoJournal.cs): `src/WinVitals.Core/Remediation/UndoJournal.cs`
- [Startup manager](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Remediation/StartupManager.cs): `src/WinVitals.Core/Remediation/StartupManager.cs`

### Reports and scheduling

- [HTML report](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Report/HtmlReport.cs): `src/WinVitals.Core/Report/HtmlReport.cs`
- [Weekly check-up](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/Scheduler.cs): `src/WinVitals.App/Scheduler.cs`
- [Scheduled summary](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.App/SpeedupSnapshot.cs): `src/WinVitals.App/SpeedupSnapshot.cs`

### Shared runtime

- [Scan findings](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Core/Model.cs): `src/WinVitals.Core/Core/Model.cs`
- [Report redaction](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Core/Redactor.cs): `src/WinVitals.Core/Core/Redactor.cs`
- [Event log reader](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Core/EventLog.cs): `src/WinVitals.Core/Core/EventLog.cs`
- [Windows command access](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Core/Shell.cs): `src/WinVitals.Core/Core/Shell.cs`
- [WMI access](https://github.com/mark-alexander-hub/winvitals/blob/main/src/WinVitals.Core/Core/Wmi.cs): `src/WinVitals.Core/Core/Wmi.cs`

### Other components

- **PC owner**
- **Windows system**

## Connections

- PC owner → Application entry: starts
- Application entry → Main window: opens interface
- Application entry → Command-line scan: dispatches arguments
- PC owner → Home dashboard: requests check-up
- Home dashboard → Scan experience: starts scan
- Scan experience → Symptom playbooks: selects checks
- Symptom playbooks → Scan runner: configures scan
- Command-line scan → Scan runner: runs scan
- Scan runner → System collectors: runs modules
- System collectors → System checks: includes
- System collectors → Power and sleep: includes
- System collectors → Storage checks: includes
- System collectors → Other check modules: includes
- Scan runner → Scan findings: builds results
- Scan experience → Findings and actions: shows findings
- Findings and actions → Repair catalog: looks up repairs
- Findings and actions → Repair session: applies confirmed fixes
- Repair session → Restore-point guard: prepares safety net
- Repair session → Repair actions: runs repairs
- Repair session → Undo journal: records undo
- Findings and actions → Startup manager: manages sign-in items
- Command-line scan → HTML report: writes report
- Findings and actions → HTML report: exports report
- Scan runner → Report redaction: redacts findings
- Home dashboard → Weekly check-up: configures weekly scan
- Weekly check-up → Scheduled summary: updates summary
- Power and sleep → Event log reader: reads events
- Storage checks → Windows command access: runs system commands
- Power and sleep → Windows command access: runs system commands
- System checks → WMI access: queries Windows
- Storage checks → WMI access: queries Windows
- Windows command access → Windows system: reads or changes
- WMI access → Windows system: queries
- Event log reader → Windows system: reads logs
- Restore-point guard → Windows system: creates restore point
- Undo journal → Windows system: persists undo data
- Startup manager → Windows system: reads and changes startup
