# ignatandrei/packageanalyzer architecture

> Architecture diagram of the GitHub repository ignatandrei/packageanalyzer, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2025-01-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ignatandrei/packageanalyzer
- Repository: https://github.com/ignatandrei/packageanalyzer

## Overview

##### Main Components

a. Core Components:
- NetPackageAnalyzerObjects (Data Models)
- NetPackageAnalyzerConsole (CLI Interface)
- AnalyzeMerge (Project Analysis)
- NuGetInfo (Package Management)
- Statistical (Data Analysis)

b. Output Generators:
- NetPackageAnalyzerExportHTML
- NetPackageAnalyzerDocusaurus
- NetPackageAnalyzerDiagram

c. Support Components:
- NPA.GitInfo (Git Integration)
- NPA.HtmlData (HTML Processing)
- NPA.Resources (Static Resources)

##### Relationships and Data Flow

**Input Sources -> Processing -> Output Generation -> Presentation**

##### Detailed Component Breakdown

a. Input Layer:
- Solution/Project Files (.csproj)
- Git Repository Data
- NuGet Package Information

b. Processing Layer:
- Project Analysis Engine
- Package Version Analysis
- Commit History Analysis
- Statistical Analysis

c. Output Layer:
- HTML Generation
- Docusaurus Site Generation
- Console Output

##### Design Elements

Use the following visual elements:
- Rectangles: Main components
- Blue: Core components
- Green: Input/Output
- Yellow: Processing
- Gray: Support services

##### Key Interactions to Highlight

**[Solution Files] --> [AnalyzeMerge]**
**[Git Repo] --> [NPA.GitInfo]**
**[NuGet] --> [NuGetInfo]**
- ↓
- [Core Analyzer]
- ↓
- [Output Generators] --> [Presentation]

## Diagram (Mermaid)

```mermaid
graph TB
    %% Styles
    classDef core fill:#b3d1ff,stroke:#333
    classDef input fill:#90EE90,stroke:#333
    classDef output fill:#98FB98,stroke:#333
    classDef process fill:#FFE5B4,stroke:#333
    classDef support fill:#D3D3D3,stroke:#333

    %% Input Layer
    subgraph InputSources
        SolutionFiles["Solution/Project Files"]:::input
        GitRepo["Git Repository"]:::input
        NuGetSource["NuGet Repository"]:::input
    end

    %% Core Processing Layer
    subgraph CoreComponents
        DataModels["Data Models"]:::core
        CLI["CLI Interface"]:::core
        ProjectAnalysis["Project Analysis"]:::core
        PackageManagement["Package Management"]:::core
        DataAnalysis["Statistical Analysis"]:::core
    end

    %% Support Components
    subgraph SupportServices
        GitIntegration["Git Integration"]:::support
        HTMLProcessor["HTML Processing"]:::support
        Resources["Static Resources"]:::support
    end

    %% Output Generation Layer
    subgraph OutputGenerators
        HTMLExport["HTML Export"]:::output
        DocusaurusSite["Docusaurus Site"]:::output
        DiagramGen["Diagram Generation"]:::output
    end

    %% Additional Components
    TestSuite["Test Suite"]:::support
    HistoryAnalysis["History Analysis"]:::process
    ConsoleOutput["Console Output"]:::output

    %% Relationships
    SolutionFiles --> ProjectAnalysis
    GitRepo --> GitIntegration
    NuGetSource --> PackageManagement

    GitIntegration --> ProjectAnalysis
    PackageManagement --> ProjectAnalysis
    ProjectAnalysis --> DataModels
    DataModels --> DataAnalysis

    DataAnalysis --> HTMLExport
    DataAnalysis --> DocusaurusSite
    DataAnalysis --> DiagramGen
    DataAnalysis --> ConsoleOutput

    HTMLProcessor --> HTMLExport
    Resources --> HTMLExport
    Resources --> DocusaurusSite

    CLI --> ProjectAnalysis
    ProjectAnalysis --> HistoryAnalysis
    TestSuite -.-> CoreComponents

    %% Click Events
    click DataModels "https://github.com/ignatandrei/PackageAnalyzer/tree/main/src/NetPackageAnalyzer/NetPackageAnalyzerObjects"
    click CLI "https://github.com/ignatandrei/PackageAnalyzer/tree/main/src/NetPackageAnalyzer/NetPackageAnalyzerConsole"
    click ProjectAnalysis "https://github.com/ignatandrei/PackageAnalyzer/tree/main/src/NetPackageAnalyzer/AnalyzeMerge"
    click PackageManagement "https://github.com/ignatandrei/PackageAnalyzer/tree/main/src/NetPackageAnalyzer/NuGetInfo"
    click DataAnalysis "https://github.com/ignatandrei/PackageAnalyzer/tree/main/src/NetPackageAnalyzer/Statistical"
    click HTMLExport "https://github.com/ignatandrei/PackageAnalyzer/tree/main/src/NetPackageAnalyzer/NetPackageAnalyzerExportHTML"
    click DocusaurusSite "https://github.com/ignatandrei/PackageAnalyzer/tree/main/src/NetPackageAnalyzer/NetPackageAnalyzerWork"
    click DiagramGen "https://github.com/ignatandrei/PackageAnalyzer/tree/main/src/NetPackageAnalyzer/NetPackageAnalyzerDiagram"
    click GitIntegration "https://github.com/ignatandrei/PackageAnalyzer/blob/main/src/NetPackageAnalyzer/NPA.GitInfo"
    click HTMLProcessor "https://github.com/ignatandrei/PackageAnalyzer/blob/main/src/NetPackageAnalyzer/NPA.HtmlData"
    click Resources "https://github.com/ignatandrei/PackageAnalyzer/blob/main/src/NetPackageAnalyzer/NPA.Resources"
    click TestSuite "https://github.com/ignatandrei/PackageAnalyzer/tree/main/src/NetPackageAnalyzer/NetPackageAnalyzerTests"
    click HistoryAnalysis "https://github.com/ignatandrei/PackageAnalyzer/tree/main/src/NetPackageAnalyzer/NetPackageAnalyzeHistory"
    click ConsoleOutput "https://github.com/ignatandrei/PackageAnalyzer/tree/main/src/NetPackageAnalyzer/NetPackageAnalyzerShowInConsole"

    %% Legend
    subgraph Legend
        L1["Core Component"]:::core
        L2["Input Source"]:::input
        L3["Output Generator"]:::output
        L4["Process"]:::process
        L5["Support Service"]:::support
    end
```
