# r34p3r-1c3734/greennet-nt106 architecture

> Architecture diagram of the GitHub repository r34p3r-1c3734/greennet-nt106, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/r34p3r-1c3734/greennet-nt106
- Repository: https://github.com/r34p3r-1c3734/greennet-nt106

## Overview

GreenNet is an experimental client–server tool for measuring and optimizing the energy cost of file transfers. A user configures a transfer in the client, which asks the load balancer for a server, sends the file with selected or adaptive compression, protocol, and encryption, then reports measurements; the server records session results for later history and comparison. Dashboard, account management, and energy-aware server selection are distinct capabilities. The graph reflects sampled client and server calls plus README-documented architecture; several protocol and UI details are documented but their implementation was not sampled.

Main entry points: [`GreenNet.Server/ServerEngine.cs`](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Server/ServerEngine.cs) (Transfer server), [`GreenNet.Client/ClientSession.cs`](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/ClientSession.cs) (Client session), [`GreenNet.Client/FileSender.cs`](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/FileSender.cs) (File transfer sender), [`GreenNet.LoadBalancer/LbEngine.cs`](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.LoadBalancer/LbEngine.cs) (Load balancer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client experience"]
  node_login["Login and register<br/>[frmLogin.cs]"]
  node_session["Client session<br/>[ClientSession.cs]"]
  node_main["Transfer controls<br/>[frmMain.cs]"]
  node_dashboard["Live dashboard<br/>[frmDashboard.cs]"]
  node_history["Session history<br/>[frmHistory.cs]"]
  node_compare["Configuration comparison<br/>[frmCompare.cs]"]
end

subgraph group_transfer["Transfer and measurement"]
  node_sender["File transfer sender<br/>[FileSender.cs]"]
  node_adaptive["Adaptive compression"]
  node_metrics["Transfer metrics<br/>[MetricsHub.cs]"]
  node_energy["Energy model<br/>[EnergyModel.cs]"]
  node_compression["Compression codecs"]
  node_rudp["Reliable UDP<br/>[Rudp.cs]"]
end

subgraph group_services["Routing and server"]
  node_balancer["Load balancer<br/>[LbEngine.cs]"]
  node_server["Transfer server<br/>[ServerEngine.cs]"]
  node_database[("SQL Server<br/>[Schema.sql]")]
end

subgraph group_shared["Shared services"]
  node_dbaccess["Database access<br/>[Database.cs]"]
  node_secure["TLS and key trust<br/>[SecureChannel.cs]"]
  node_framing["Message framing<br/>[Framing.cs]"]
  node_crypto["AES and passwords<br/>[CryptoHelper.cs]"]
end

node_user(("User"))

node_user -->|"signs in"| node_login
node_user -->|"configures transfer"| node_main
node_user -->|"monitors"| node_dashboard
node_user -->|"reviews sessions"| node_history
node_user -->|"compares runs"| node_compare
node_login -->|"requests account"| node_session
node_main -->|"starts transfer"| node_sender
node_main -->|"updates metrics"| node_metrics
node_dashboard -->|"reads metrics"| node_metrics
node_history -->|"loads sessions"| node_session
node_compare -->|"loads comparisons"| node_session
node_sender -->|"connects via"| node_session
node_sender -->|"selects compression"| node_adaptive
node_sender -->|"compresses chunks"| node_compression
node_sender -->|"estimates energy"| node_energy
node_adaptive -->|"tests codecs"| node_compression
node_adaptive -->|"scores options"| node_energy
node_session -->|"requests server"| node_balancer
node_session -->|"opens TLS"| node_server
node_balancer -->|"checks health"| node_server
node_balancer -->|"selects endpoint"| node_server
node_server -->|"stores results"| node_dbaccess
node_dbaccess -->|"reads and writes"| node_database
node_server -->|"decompresses chunks"| node_compression
node_server -->|"verifies credentials"| node_crypto
node_server -->|"serves TLS"| node_secure
node_session -->|"frames requests"| node_framing
node_balancer -->|"frames routing messages"| node_framing
node_server -->|"frames protocol messages"| node_framing
node_session -->|"authenticates server"| node_secure
node_sender -.->|"uses reliable UDP"| node_rudp

click node_login "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/frmLogin.cs"
click node_session "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/ClientSession.cs"
click node_main "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/frmMain.cs"
click node_dashboard "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/frmDashboard.cs"
click node_history "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/frmHistory.cs"
click node_compare "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/frmCompare.cs"
click node_sender "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/FileSender.cs"
click node_adaptive "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/AdaptiveController.cs"
click node_metrics "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/MetricsHub.cs"
click node_energy "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Core/EnergyModel.cs"
click node_compression "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Core/CompressionHelper.cs"
click node_rudp "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Core/Rudp.cs"
click node_balancer "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.LoadBalancer/LbEngine.cs"
click node_server "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Server/ServerEngine.cs"
click node_database "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/db/Schema.sql"
click node_dbaccess "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Core/Database.cs"
click node_secure "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Core/SecureChannel.cs"
click node_framing "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Core/Framing.cs"
click node_crypto "https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Core/CryptoHelper.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_login,node_session,node_main,node_dashboard,node_history,node_compare,node_user toneBlue
class node_sender,node_adaptive,node_metrics,node_energy,node_compression,node_rudp toneAmber
class node_balancer,node_server,node_database toneMint
class node_dbaccess,node_secure,node_framing,node_crypto toneRose
```

## Components

### Client experience

- [Login and register](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/frmLogin.cs): `GreenNet.Client/frmLogin.cs`
- [Client session](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/ClientSession.cs): `GreenNet.Client/ClientSession.cs`
- [Transfer controls](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/frmMain.cs): `GreenNet.Client/frmMain.cs`
- [Live dashboard](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/frmDashboard.cs): `GreenNet.Client/frmDashboard.cs`
- [Session history](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/frmHistory.cs): `GreenNet.Client/frmHistory.cs`
- [Configuration comparison](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/frmCompare.cs): `GreenNet.Client/frmCompare.cs`

### Transfer and measurement

- [File transfer sender](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/FileSender.cs): `GreenNet.Client/FileSender.cs`
- [Adaptive compression](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/AdaptiveController.cs): `GreenNet.Client/AdaptiveController.cs`
- [Transfer metrics](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Client/MetricsHub.cs): `GreenNet.Client/MetricsHub.cs`
- [Energy model](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Core/EnergyModel.cs): `GreenNet.Core/EnergyModel.cs`
- [Compression codecs](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Core/CompressionHelper.cs): `GreenNet.Core/CompressionHelper.cs`
- [Reliable UDP](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Core/Rudp.cs): `GreenNet.Core/Rudp.cs`

### Routing and server

- [Load balancer](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.LoadBalancer/LbEngine.cs): `GreenNet.LoadBalancer/LbEngine.cs`
- [Transfer server](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Server/ServerEngine.cs): `GreenNet.Server/ServerEngine.cs`
- [SQL Server](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/db/Schema.sql): `db/Schema.sql`

### Shared services

- [Database access](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Core/Database.cs): `GreenNet.Core/Database.cs`
- [TLS and key trust](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Core/SecureChannel.cs): `GreenNet.Core/SecureChannel.cs`
- [Message framing](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Core/Framing.cs): `GreenNet.Core/Framing.cs`
- [AES and passwords](https://github.com/r34p3r-1c3734/greennet-nt106/blob/master/GreenNet.Core/CryptoHelper.cs): `GreenNet.Core/CryptoHelper.cs`

### Other components

- **User**

## Connections

- User → Login and register: signs in (evidence: `README.md`)
- User → Transfer controls: configures transfer (evidence: `README.md`)
- User → Live dashboard: monitors (evidence: `README.md`)
- User → Session history: reviews sessions (evidence: `README.md`)
- User → Configuration comparison: compares runs (evidence: `README.md`)
- Login and register → Client session: requests account (evidence: `GreenNet.Client/frmLogin.cs`)
- Transfer controls → File transfer sender: starts transfer (evidence: `GreenNet.Client/frmMain.cs`)
- Transfer controls → Transfer metrics: updates metrics (evidence: `GreenNet.Client/frmMain.cs`)
- Live dashboard → Transfer metrics: reads metrics (evidence: `GreenNet.Client/frmDashboard.cs`)
- Session history → Client session: loads sessions (evidence: `GreenNet.Client/frmHistory.cs`)
- Configuration comparison → Client session: loads comparisons (evidence: `GreenNet.Client/frmCompare.cs`)
- File transfer sender → Client session: connects via (evidence: `GreenNet.Client/FileSender.cs`)
- File transfer sender → Adaptive compression: selects compression (evidence: `GreenNet.Client/FileSender.cs`)
- File transfer sender → Compression codecs: compresses chunks (evidence: `GreenNet.Client/FileSender.cs`)
- File transfer sender → Energy model: estimates energy (evidence: `GreenNet.Client/FileSender.cs`)
- Adaptive compression → Compression codecs: tests codecs (evidence: `GreenNet.Client/AdaptiveController.cs`)
- Adaptive compression → Energy model: scores options (evidence: `GreenNet.Client/AdaptiveController.cs`)
- Client session → Load balancer: requests server (evidence: `GreenNet.Client/ClientSession.cs`)
- Client session → Transfer server: opens TLS (evidence: `GreenNet.Client/ClientSession.cs`)
- Load balancer → Transfer server: checks health (evidence: `README.md`)
- Load balancer → Transfer server: selects endpoint (evidence: `GreenNet.LoadBalancer/LbEngine.cs`)
- Transfer server → Database access: stores results (evidence: `GreenNet.Server/ServerEngine.cs`)
- Database access → SQL Server: reads and writes (evidence: `GreenNet.Core/Database.cs`)
- Transfer server → Compression codecs: decompresses chunks (evidence: `GreenNet.Server/ServerEngine.cs`)
- Transfer server → AES and passwords: verifies credentials (evidence: `GreenNet.Server/ServerEngine.cs`)
- Transfer server → TLS and key trust: serves TLS (evidence: `GreenNet.Server/ServerEngine.cs`)
- Client session → Message framing: frames requests (evidence: `GreenNet.Client/ClientSession.cs`)
- Load balancer → Message framing: frames routing messages (evidence: `GreenNet.LoadBalancer/LbEngine.cs`)
- Transfer server → Message framing: frames protocol messages (evidence: `GreenNet.Server/ServerEngine.cs`)
- Client session → TLS and key trust: authenticates server (evidence: `GreenNet.Client/ClientSession.cs`)
- File transfer sender → Reliable UDP: uses reliable UDP
