ThunderPropagator.BuildingBlocks.Modules 1.0.1-beta.104

This is a prerelease version of ThunderPropagator.BuildingBlocks.Modules.
dotnet add package ThunderPropagator.BuildingBlocks.Modules --version 1.0.1-beta.104
 
NuGet\Install-Package ThunderPropagator.BuildingBlocks.Modules -Version 1.0.1-beta.104
 
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ThunderPropagator.BuildingBlocks.Modules" Version="1.0.1-beta.104" />
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ThunderPropagator.BuildingBlocks.Modules" Version="1.0.1-beta.104" />
 
Directory.Packages.props
<PackageReference Include="ThunderPropagator.BuildingBlocks.Modules" />
 
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ThunderPropagator.BuildingBlocks.Modules --version 1.0.1-beta.104
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: ThunderPropagator.BuildingBlocks.Modules, 1.0.1-beta.104"
 
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ThunderPropagator.BuildingBlocks.Modules@1.0.1-beta.104
 
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ThunderPropagator.BuildingBlocks.Modules&version=1.0.1-beta.104&prerelease
 
Install as a Cake Addin
#tool nuget:?package=ThunderPropagator.BuildingBlocks.Modules&version=1.0.1-beta.104&prerelease
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

ThunderPropagator BuildingBlocks (Project ARC)

ThunderPropagator BuildingBlocks (Project ARC) is a comprehensive .NET library providing production-ready, reusable components for building high-performance, cloud-native applications. Targets .NET 8.0, 9.0, and 10.0 with multi-platform support (AnyCPU, x86, x64, ARM64).


πŸ“š Documentation

Main Documentation Hub: docs/README.md

Documentation Catalog

Application Layer (Core Building Blocks)
Area Types Files Diagrams Description
BuildingBlocks.Application 15 12 βœ“ Core abstractions (FeederMessage, ServiceConfiguration, Telemetry)
β”œβ”€ Attributes 2 2 βœ“ JSON serialization control and member ignore attributes
β”œβ”€ Certificate 1 1 βœ— X.509 certificate handling and management
β”œβ”€ ChangeTrackingItems 5 5 βœ— Property change tracking with observable patterns
β”œβ”€ Ciphering 3 3 βœ“ AES/RSA encryption and password generation
β”œβ”€ Collections 3 3 βœ“ LinkedArray, BindingDictionary, GenericOrderedDictionary
β”œβ”€ CorrelationId 3 3 βœ— Correlation ID management for distributed tracing
β”œβ”€ Enums 4 4 βœ— Common enumerations (AuthenticationType, CastType, DataType)
β”œβ”€ Helpers 18 18 βœ“ Serialization, collection, string, date/time utilities
β”œβ”€ Identity 2 2 βœ— JWT identity helper utilities
β”œβ”€ Objects 5 5 βœ“ Base classes (DisposableObject, EquatableObject, NotifiableObject)
└─ Serializations 4 4 βœ— Serialization abstractions and Kafka serializer types
Infrastructure Layer (System-Level Components)
Area Types Files Diagrams Description
BuildingBlocks.Infrastructure 0 1 βœ“ Infrastructure layer entry point
β”œβ”€ HealthChecks 0 0 βœ— ASP.NET Core health check integrations
β”œβ”€ System 0 0 βœ— System-level utilities and abstractions
β”‚ └─ Network 2 2 βœ— Network performance monitoring
└─ SystemResourceMonitor 4 4 βœ“ Cross-platform resource monitoring
β”œβ”€ Metrics 2 2 βœ— Metrics client abstractions
β”œβ”€ Battery 3 2 βœ— Battery status, charge, health (Windows/macOS/Linux)
β”œβ”€ Cpu 4 4 βœ— CPU usage and temperature monitoring
β”œβ”€ Disk 6 4 βœ— Disk health (SMART) and I/O performance
β”œβ”€ Gpu 3 2 βœ— GPU utilization, memory, temperature
β”œβ”€ Memory 2 2 βœ— System and process memory usage
└─ SystemDrives 2 2 βœ— System drive enumeration and space

Total: 100+ types, 92 files, 25+ diagrams created

Last generated: December 28, 2025


πŸ“¦ NuGet Installation (GitHub Packages)

ThunderPropagator packages are hosted on GitHub Packages: https://nuget.pkg.github.com/KiarashMinoo/index.json

Configure NuGet Source

Option 1: nuget.config (recommended)


<configuration>
 <packageSources>
 <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
 <add key="github" value="https://nuget.pkg.github.com/KiarashMinoo/index.json" />
 </packageSources>
 <packageSourceMapping>
 <packageSource key="github">
 <package pattern="ThunderPropagator.*" />
 </packageSource>
 <packageSource key="nuget.org">
 <package pattern="*" />
 </packageSource>
 </packageSourceMapping>
 <packageSourceCredentials>
 <github>
 <add key="Username" value="YOUR_GITHUB_USERNAME" />
 <add key="ClearTextPassword" value="YOUR_GITHUB_PAT" />
 </github>
 </packageSourceCredentials>
</configuration>

Option 2: CLI

dotnet nuget add source https://nuget.pkg.github.com/KiarashMinoo/index.json \
 --name github \
 --username YOUR_GITHUB_USERNAME \
 --password YOUR_GITHUB_PAT \
 --store-password-in-clear-text

Install Packages

# Core application building blocks
dotnet add package ThunderPropagator.BuildingBlocks.Application
# Infrastructure components
dotnet add package ThunderPropagator.BuildingBlocks.Infrastructure

🎯 Quick Start

FeederMessage Pattern

using ThunderPropagator.BuildingBlocks.Application;
public class OrderMessage : FeederMessage
{
 public Guid OrderId
 {
 get => GetValueOrDefault(Guid.NewGuid());
 set => SetValue(value);
 }
 
 public decimal Amount
 {
 get => GetValueOrDefault(0m);
 set => SetValue(value);
 }
}
var order = new OrderMessage
{
 OrderId = Guid.NewGuid(),
 Amount = 99.99m,
 CorrelationId = "req-12345"
};

System Resource Monitoring

using ThunderPropagator.BuildingBlocks.Infrastructure.SystemResourceMonitor;
services.AddSystemResourceMonitor(options =>
{
 options.EnableCpuMetrics = true;
 options.EnableMemoryMetrics = true;
 options.EnableDiskHealth = true;
 options.DefaultSamplingWindowMs = 500;
});
// Inject and use
public class MonitoringService
{
 private readonly ISystemResourceMonitor _monitor;
 
 public MonitoringService(ISystemResourceMonitor monitor)
 {
 _monitor = monitor;
 }
 
 public async Task<SystemResourceMonitorMetrics> GetMetricsAsync()
 {
 return await _monitor.GetMetricsAsync();
 }
}

Serialization Helpers

using ThunderPropagator.BuildingBlocks.Application.Helpers;
// JSON
var json = myObject.ToJson();
var obj = json.FromJson<MyType>();
// YAML
var yaml = myObject.ToYaml();
// ProtoBuf
var bytes = myObject.ToProtoBufBytes();
// MessagePack
var base64 = myObject.ToMessagePackBase64();

πŸ›  Build & Test

# Restore dependencies
dotnet restore
# Build (Release)
dotnet build -c Release
# Run tests
dotnet test -c Release
# Package
dotnet pack -c Release -o artifacts/pkg

Multi-Platform Builds:

  • Platforms: AnyCPU, x86, x64, ARM64
  • Frameworks: net8.0, net9.0, net10.0

πŸ“„ Available Packages

Package Version Description Documentation
ThunderPropagator.BuildingBlocks.Application 1.0.1-beta.* Core application building blocks (FeederMessage, ServiceConfiguration, Helpers, Serialization) docs/BuildingBlocks.Application
ThunderPropagator.BuildingBlocks.Infrastructure 1.0.1-beta.* Infrastructure components (SystemResourceMonitor, HealthChecks, Network) docs/BuildingBlocks.Infrastructure

πŸ“– Key Features

Application Layer

  • FeederMessage: Dictionary-based message abstraction with correlation ID
  • ServiceConfiguration: Strongly-typed configuration with change notifications
  • Telemetry: OpenTelemetry integration (Activities, Counters, Histograms)
  • Helpers: Comprehensive serialization (JSON, YAML, ProtoBuf, MessagePack, NetJSON, Newtonsoft.Json)
  • Collections: LinkedArray, BindingDictionary, GenericOrderedDictionary
  • Ciphering: AES/RSA encryption, password generation
  • Objects: DisposableObject, EquatableObject, NotifiableObject base classes

Infrastructure Layer

  • SystemResourceMonitor: Cross-platform monitoring (CPU, Memory, Disk, GPU, Battery)
  • Platform Providers: Windows/Linux/macOS with graceful degradation
  • SMART Disk Health: Disk health monitoring via platform-specific tools
  • GPU Metrics: nvidia-smi/rocm-smi integration
  • Battery Status: Power management metrics
  • No External Packages: Uses .NET BCL and CLI tools only

πŸ— Architecture

The solution follows a strict two-layer architecture:

  1. Application Layer (ThunderPropagator.BuildingBlocks.Application)

    • Core building blocks with NO infrastructure dependencies
    • Helpers, serialization, collections, base classes
    • Verified by Tests/ArchTests/ArchitectureTests.cs
  2. Infrastructure Layer (ThunderPropagator.BuildingBlocks.Infrastructure)

    • System-level components (monitoring, health checks)
    • Depends on Application layer
    • Platform-specific providers with graceful degradation

Critical Rule: Application layer MUST NEVER depend on Infrastructure layer.


πŸ§ͺ Testing

Run All Tests

dotnet test -c Release

Architecture Tests

Architecture constraints are enforced by NetArchTest.Rules in Tests/ArchTests/:

  • Application layer has no Infrastructure dependencies
  • Naming conventions
  • Layer boundaries

Unit Tests

Comprehensive unit tests with xUnit and NSubstitute in Tests/ThunderPropagator.UnitTests/:

  • FeederMessage, ServiceConfiguration tests
  • Helper method tests
  • Collection tests
  • SystemResourceMonitor tests

Benchmarks

BenchmarkDotNet benchmarks for performance-critical code:

  • CollectionHelperBenchmark.cs
  • SizeBenchmark.cs

πŸš€ CI/CD Workflows

  • develop branch β†’ develop-beta-ci.yml β†’ Increments beta version
  • release/ branch β†’ develop-release-ci.yml β†’ Creates GitHub release, strips beta suffix
  • GitHub Packages feed: https://nuget.pkg.github.com/KiarashMinoo/index.json

πŸ“ Contributing

  1. Follow the existing code conventions (see .github/copilot-instructions.md)
  2. Add XML documentation for all public APIs
  3. Include unit tests for new features
  4. Update relevant documentation in /docs
  5. Ensure architecture tests pass

πŸ“œ License

See LICENSE for details.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed.
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (12)

Showing the top 5 NuGet packages that depend on ThunderPropagator.BuildingBlocks.Modules:

Package Downloads
ThunderPropagator.Debug

ThunderPropagator (Project ARC): High-performance data propagation; effortless, blazingly fast and cloud-native for maximum impact

ThunderPropagator

ThunderPropagator (Project ARC): High-performance data propagation; effortless, blazingly fast and cloud-native for maximum impact

ThunderPropagator.Debug.ARM64

ThunderPropagator (Project ARC): High-performance data propagation; effortless, blazingly fast and cloud-native for maximum impact

ThunderPropagator.Debug.x64

ThunderPropagator (Project ARC): High-performance data propagation; effortless, blazingly fast and cloud-native for maximum impact

ThunderPropagator.Debug.x86

ThunderPropagator (Project ARC): High-performance data propagation; effortless, blazingly fast and cloud-native for maximum impact

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.1-beta.104 58 6/25/2026
1.0.1-beta.103 54 6/25/2026
1.0.1-beta.102 2,041 6/16/2026
1.0.1-beta.101 64 6/16/2026
1.0.1-beta.100 55 6/16/2026
1.0.1-beta.99 63 6/16/2026
1.0.1-beta.98 53 6/16/2026
1.0.1-beta.97 59 6/16/2026
1.0.1-beta.96 54 6/16/2026
1.0.1-beta.95 56 6/16/2026
1.0.1-beta.94 54 6/16/2026
1.0.1-beta.93 55 6/16/2026
1.0.1-beta.92 61 6/16/2026
1.0.1-beta.91 52 6/16/2026
1.0.1-beta.90 65 6/16/2026
1.0.1-beta.89 51 6/16/2026
1.0.1-beta.88 54 6/16/2026
1.0.1-beta.87 56 6/15/2026
1.0.1-beta.86 849 6/15/2026
1.0.1-beta.85 53 6/15/2026
Loading failed

- No user-facing changes in this push.