# ehtterami/ip-truffle architecture

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

## Overview

IP Truffle is a command-line IPv4 utility. A user invokes a command through `main.php`; translation inputs are parsed and converted, while subnet and network-ID commands delegate their calculations and display results. The README also documents CIDR/range translation. `BannerFacade` is included because the entry point invokes it, but its implementation was not sampled, so its internal wiring is not asserted.

Main entry points: [`main.php`](https://github.com/ehtterami/ip-truffle/blob/development/main.php) (Command entry), [`src/Facades/TranslateFacade.php`](https://github.com/ehtterami/ip-truffle/blob/development/src/Facades/TranslateFacade.php) (Translation facade), [`src/Applications/CalculateSubnet.php`](https://github.com/ehtterami/ip-truffle/blob/development/src/Applications/CalculateSubnet.php) (Subnet command), [`src/Applications/CalculateNetID.php`](https://github.com/ehtterami/ip-truffle/blob/development/src/Applications/CalculateNetID.php) (Network ID command)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["CLI entry"]
  node_main["Command entry<br/>[main.php]"]
  node_translate_cmd["Translate command<br/>[main.php]"]
  node_subnet_cmd["Subnet command"]
  node_netid_cmd["Network ID command<br/>[CalculateNetID.php]"]
end

subgraph group_translation["Address translation"]
  node_translate_facade["Translation facade"]
  node_reader["Input reader<br/>[ReaderService.php]"]
  node_translator["IPv4 translator"]
end

subgraph group_calculations["Network calculations"]
  node_subnet_facade["Subnet facade"]
  node_subnet_service["Subnet calculator"]
  node_netid_facade["Network ID facade"]
  node_netid_service["Network ID calculator"]
end

subgraph group_presentation["Terminal presentation"]
  node_banner_facade["Banner facade<br/>[BannerFacade.php]"]
  node_banner_service["Banner renderer<br/>[BannerService.php]"]
end

node_user(("CLI user"))
node_terminal(("Terminal"))

node_user -->|"invokes"| node_main
node_main -->|"registers"| node_translate_cmd
node_main -->|"registers"| node_subnet_cmd
node_main -->|"registers"| node_netid_cmd
node_main -->|"dispatches"| node_translate_cmd
node_main -->|"renders banner"| node_banner_facade
node_translate_cmd -->|"translates input"| node_translate_facade
node_translate_facade -->|"parses input"| node_reader
node_reader -->|"returns octets"| node_translate_facade
node_translate_facade -->|"converts octets"| node_translator
node_translator -->|"returns translation"| node_translate_facade
node_subnet_cmd -->|"requests subnet"| node_subnet_facade
node_subnet_facade -->|"calculates subnet"| node_subnet_service
node_netid_cmd -->|"requests network ID"| node_netid_facade
node_netid_facade -->|"calculates network ID"| node_netid_service
node_translate_cmd -->|"prints result"| node_terminal
node_subnet_cmd -->|"prints result"| node_terminal
node_netid_cmd -->|"prints result"| node_terminal

click node_main "https://github.com/ehtterami/ip-truffle/blob/development/main.php"
click node_translate_cmd "https://github.com/ehtterami/ip-truffle/blob/development/main.php"
click node_subnet_cmd "https://github.com/ehtterami/ip-truffle/blob/development/src/Applications/CalculateSubnet.php"
click node_netid_cmd "https://github.com/ehtterami/ip-truffle/blob/development/src/Applications/CalculateNetID.php"
click node_translate_facade "https://github.com/ehtterami/ip-truffle/blob/development/src/Facades/TranslateFacade.php"
click node_reader "https://github.com/ehtterami/ip-truffle/blob/development/src/Services/ReaderService.php"
click node_translator "https://github.com/ehtterami/ip-truffle/blob/development/src/Services/TranslatorService.php"
click node_subnet_facade "https://github.com/ehtterami/ip-truffle/blob/development/src/Facades/SubnetCalculatorFacade.php"
click node_subnet_service "https://github.com/ehtterami/ip-truffle/blob/development/src/Services/SubnetCalculatorService.php"
click node_netid_facade "https://github.com/ehtterami/ip-truffle/blob/development/src/Facades/NetIDCalculatorFacade.php"
click node_netid_service "https://github.com/ehtterami/ip-truffle/blob/development/src/Services/NetIDCalculatorService.php"
click node_banner_facade "https://github.com/ehtterami/ip-truffle/blob/development/src/Facades/BannerFacade.php"
click node_banner_service "https://github.com/ehtterami/ip-truffle/blob/development/src/Services/BannerService.php"

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_main,node_translate_cmd,node_subnet_cmd,node_netid_cmd,node_user toneBlue
class node_translate_facade,node_reader,node_translator toneAmber
class node_subnet_facade,node_subnet_service,node_netid_facade,node_netid_service toneMint
class node_banner_facade,node_banner_service toneRose
class node_terminal toneIndigo
```

## Components

### CLI entry

- [Command entry](https://github.com/ehtterami/ip-truffle/blob/development/main.php): `main.php`
- [Translate command](https://github.com/ehtterami/ip-truffle/blob/development/main.php): `main.php`
- [Subnet command](https://github.com/ehtterami/ip-truffle/blob/development/src/Applications/CalculateSubnet.php): `src/Applications/CalculateSubnet.php`
- [Network ID command](https://github.com/ehtterami/ip-truffle/blob/development/src/Applications/CalculateNetID.php): `src/Applications/CalculateNetID.php`

### Address translation

- [Translation facade](https://github.com/ehtterami/ip-truffle/blob/development/src/Facades/TranslateFacade.php): `src/Facades/TranslateFacade.php`
- [Input reader](https://github.com/ehtterami/ip-truffle/blob/development/src/Services/ReaderService.php): `src/Services/ReaderService.php`
- [IPv4 translator](https://github.com/ehtterami/ip-truffle/blob/development/src/Services/TranslatorService.php): `src/Services/TranslatorService.php`

### Network calculations

- [Subnet facade](https://github.com/ehtterami/ip-truffle/blob/development/src/Facades/SubnetCalculatorFacade.php): `src/Facades/SubnetCalculatorFacade.php`
- [Subnet calculator](https://github.com/ehtterami/ip-truffle/blob/development/src/Services/SubnetCalculatorService.php): `src/Services/SubnetCalculatorService.php`
- [Network ID facade](https://github.com/ehtterami/ip-truffle/blob/development/src/Facades/NetIDCalculatorFacade.php): `src/Facades/NetIDCalculatorFacade.php`
- [Network ID calculator](https://github.com/ehtterami/ip-truffle/blob/development/src/Services/NetIDCalculatorService.php): `src/Services/NetIDCalculatorService.php`

### Terminal presentation

- [Banner facade](https://github.com/ehtterami/ip-truffle/blob/development/src/Facades/BannerFacade.php): `src/Facades/BannerFacade.php`
- [Banner renderer](https://github.com/ehtterami/ip-truffle/blob/development/src/Services/BannerService.php): `src/Services/BannerService.php`

### Other components

- **CLI user**
- **Terminal**

## Connections

- CLI user → Command entry: invokes
- Command entry → Translate command: registers
- Command entry → Subnet command: registers
- Command entry → Network ID command: registers
- Command entry → Translate command: dispatches
- Command entry → Banner facade: renders banner
- Translate command → Translation facade: translates input
- Translation facade → Input reader: parses input
- Input reader → Translation facade: returns octets
- Translation facade → IPv4 translator: converts octets
- IPv4 translator → Translation facade: returns translation
- Subnet command → Subnet facade: requests subnet
- Subnet facade → Subnet calculator: calculates subnet
- Network ID command → Network ID facade: requests network ID
- Network ID facade → Network ID calculator: calculates network ID
- Translate command → Terminal: prints result
- Subnet command → Terminal: prints result
- Network ID command → Terminal: prints result
