ThunderPropagator.Channels.Chat.ARM64 1.0.1-beta.3

This is a prerelease version of ThunderPropagator.Channels.Chat.ARM64.
dotnet add package ThunderPropagator.Channels.Chat.ARM64 --version 1.0.1-beta.3
                    
NuGet\Install-Package ThunderPropagator.Channels.Chat.ARM64 -Version 1.0.1-beta.3
                    
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.Channels.Chat.ARM64" Version="1.0.1-beta.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ThunderPropagator.Channels.Chat.ARM64" Version="1.0.1-beta.3" />
                    
Directory.Packages.props
<PackageReference Include="ThunderPropagator.Channels.Chat.ARM64" />
                    
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.Channels.Chat.ARM64 --version 1.0.1-beta.3
                    
#r "nuget: ThunderPropagator.Channels.Chat.ARM64, 1.0.1-beta.3"
                    
#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.Channels.Chat.ARM64@1.0.1-beta.3
                    
#: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.Channels.Chat.ARM64&version=1.0.1-beta.3&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=ThunderPropagator.Channels.Chat.ARM64&version=1.0.1-beta.3&prerelease
                    
Install as a Cake Tool

ThunderPropagator.Channels

License .NET Platforms

Redefining real-time data streaming: effortless, blazingly fast, and cloud-native for maximum impact.

Overview

ThunderPropagator.Channels (Project ARC) is a comprehensive library delivering 12 production-ready real-time streaming implementations built on the ThunderPropagator framework. This repository showcases blazingly fast, cloud-native WebSocket-based pub/sub patterns across diverse domains—from simple clock feeds to complex multiplayer games.

What's Included

  • 7 Production Channels: Fully-featured real-time channels (Chat, Clock, NetworkMonitoring, Notifications, ResourceMonitoring, Throughput, TimeZones)
  • 3 Business Demos: Complex domain-driven applications (Airport, Portfolio, StockListBasic)
  • 2 Interactive Games: Multiplayer games with bidirectional communication (RockPaperScissors, TicTacToe)
  • Comprehensive Documentation: Auto-generated, deep-dive technical docs with Mermaid diagrams
  • Multi-Framework: Targets .NET 8, 9, and 10
  • Multi-Platform: Supports AnyCPU, x86, x64, ARM64

Quick Start

Prerequisites

  • .NET SDK 9.0+ (see global.json)
  • GitHub Personal Access Token (for ThunderPropagator package access)

Configure NuGet Source

ThunderPropagator packages are hosted on GitHub Packages. Add the source:

# Set your GitHub token as environment variable
$env:GH_TOKEN = "your_github_token"

# Add GitHub Packages source
dotnet nuget add source "https://nuget.pkg.github.com/KiarashMinoo/index.json" \
    --name github \
    --username YOUR_GITHUB_USERNAME \
    --password $env:GH_TOKEN \
    --store-password-in-clear-text

Alternatively, use the included nuget.config:

<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>
  <packageSourceCredentials>
    <github>
      <add key="Username" value="KiarashMinoo" />
      <add key="ClearTextPassword" value="%GH_TOKEN%" />
    </github>
  </packageSourceCredentials>
</configuration>

Install & Build

# Clone repository
git clone https://github.com/KiarashMinoo/ThunderPropagator.Channels.git
cd ThunderPropagator.Channels

# Restore packages
dotnet restore

# Build solution (Release mode)
dotnet build -c Release --no-incremental

# Run tests
dotnet test -c Release

Use a Channel

using Microsoft.Extensions.DependencyInjection;
using ThunderPropagator.Channels.Clock;

// Register Clock channel
var services = new ServiceCollection();
services.AddClockChannel(config =>
{
    config.IsEnabled = true;
});

var serviceProvider = services.BuildServiceProvider();
var channel = serviceProvider.GetRequiredService<ClockChannel>();

// Subscribe to real-time updates
var subscription = await channel.SubscribeAsync(new Dictionary<string, object>
{
    ["Key"] = "Now"
});

subscription.OnMessage(message =>
{
    var clockMessage = message as ClockChannelFeederMessage;
    Console.WriteLine($"Current time: {clockMessage.DateTime}");
});

Documentation

This repository publishes comprehensive generated documentation under /docs. The catalog below links to areas and key subfolders with metrics for types, files, and diagrams.

Documentation Catalog

Last generated: December 28, 2025

Architecture

ThunderPropagator.Channels follows strict architectural patterns enforced through ArchTests:

Channel Structure (Mandatory Components)

Every channel implementation includes:

  1. {Name}Channel.cs — Inherits AbstractChannel<TMetadata, TConfiguration>
  2. {Name}ChannelConfiguration.cs — Extends AbstractChannelConfiguration
  3. {Name}ChannelFeederMessage.cs — Inherits FeederMessage (data contract)
  4. {Name}ChannelMetadata.cs — Extends AbstractChannelMetadata
  5. {Name}ChannelExtensions.cs — DI registration via IServiceCollection extensions

Patterns

  • Feeder Pattern: Data sources generating/collecting data (see NowClockFeeder)
  • Pipeline Pattern: Bidirectional request/response handlers (see Chat Pipelines)
  • DI Registration: Fluent configuration via extension methods

Build System & Versioning

  • Version: 1.0.1-beta.7 (Directory.Build.props)
  • Frameworks: .NET 8, 9, 10 (controlled in Directory.Build.props)
  • Platforms: AnyCPU, x86, x64, ARM64
  • Central Package Management: Directory.Packages.props
  • Package Naming: Includes configuration and platform suffixes
    • Debug: {ProjectName}.Debug.{Platform}
    • Release: {ProjectName}.{Platform} (AnyCPU omits platform suffix)

Building

# Build all platforms for Release
dotnet build ThunderPropagator.Channels.sln -c Release -p:Platform=AnyCPU
dotnet build ThunderPropagator.Channels.sln -c Release -p:Platform=x64
dotnet build ThunderPropagator.Channels.sln -c Release -p:Platform=ARM64

Testing

# Run all tests
dotnet test

# Run with coverage
dotnet test --collect:"XPlat Code Coverage"

Package Publishing

# Pack all platforms
dotnet pack -c Release -p:Platform=x64
dotnet pack -c Release -p:Platform=ARM64

# Publish to GitHub Packages
dotnet nuget push "bin/Release/*.nupkg" --source github --api-key $env:GITHUB_TOKEN

Project Organization

src/
├── Channels/          # 7 production channels
│   ├── ThunderPropagator.Channels.Chat/
│   ├── ThunderPropagator.Channels.Clock/
│   ├── ThunderPropagator.Channels.NetworkMonitoring/
│   ├── ThunderPropagator.Channels.Notifications/
│   ├── ThunderPropagator.Channels.ResourceMonitoring/
│   ├── ThunderPropagator.Channels.Throughput/
│   └── ThunderPropagator.Channels.TimeZones/
├── Demo/              # 3 business demos
│   ├── ThunderPropagator.Channels.Demo.Airport/
│   ├── ThunderPropagator.Channels.Demo.Portfolio/
│   └── ThunderPropagator.Channels.Demo.StockListBasic/
└── Games/             # 2 interactive games
    ├── ThunderPropagator.Channels.Games.RockPaperScissors/
    └── ThunderPropagator.Channels.Games.TicTacToe/

Tests/
├── ArchTests/         # Architecture validation tests
├── UnitTests/         # Comprehensive unit test suites
│   ├── Channels/
│   ├── Demo/
│   └── Games/
└── Demo/              # Demo-specific tests

docs/                  # Auto-generated documentation
├── README.md          # Documentation landing page
├── Channels/          # Channel documentation with Mermaid diagrams
├── Demo/              # Demo documentation
└── Games/             # Game documentation

Dependencies

Core Framework

  • ThunderPropagator 1.0.1-beta.5+
    • Core real-time streaming framework
    • WebSocket-based pub/sub infrastructure
    • Channel abstractions and patterns

Testing & Utilities

  • Testing: xUnit, NSubstitute (mocking), coverlet (coverage)
  • Utilities: Bogus (fake data), NodaTime (timezones), JetBrains.Annotations
  • Infrastructure: Microsoft.Extensions.* (DI, caching, HTTP), Polly (resilience)

See Directory.Packages.props for complete dependency list with framework-specific versions.

Code Conventions

  • Nullable Reference Types: Enabled globally
  • Implicit Usings: Enabled
  • XML Documentation: Required (generated for NuGet packages)
  • Conditional Compilation: Classes are non-sealed in DEBUG for testability
  • Telemetry: All pipelines/feeders include Activity tracing and metrics
  • Health Monitoring: Feeders expose health endpoints

Contributing

Contributions are welcome! Please ensure:

  1. All architecture tests pass (dotnet test Tests/ArchTests)
  2. XML documentation is provided for public APIs
  3. Follow existing channel/feeder/pipeline patterns
  4. Add unit tests for new functionality
  5. Update documentation (docs/ folder)

License

This project is licensed under the Apache License 2.0. See LICENSE for details.

Authors

ThunderPropagator Corporation (Project ARC)

Copyright ©2024 ThunderPropagator Corporation


Blazingly fast. Cloud-native. Maximum impact. 🚀

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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.1-beta.3 18 5/13/2026

- [ThunderPropagator.Channels#7] Migrates to slnx, centralizes CI, and cleans legacy scripts