ThunderPropagator.Channels.Chat.ARM64
1.0.1-beta.3
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
<PackageReference Include="ThunderPropagator.Channels.Chat.ARM64" Version="1.0.1-beta.3" />
<PackageVersion Include="ThunderPropagator.Channels.Chat.ARM64" Version="1.0.1-beta.3" />
<PackageReference Include="ThunderPropagator.Channels.Chat.ARM64" />
paket add ThunderPropagator.Channels.Chat.ARM64 --version 1.0.1-beta.3
#r "nuget: ThunderPropagator.Channels.Chat.ARM64, 1.0.1-beta.3"
#:package ThunderPropagator.Channels.Chat.ARM64@1.0.1-beta.3
#addin nuget:?package=ThunderPropagator.Channels.Chat.ARM64&version=1.0.1-beta.3&prerelease
#tool nuget:?package=ThunderPropagator.Channels.Chat.ARM64&version=1.0.1-beta.3&prerelease
ThunderPropagator.Channels
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
Channels
Types:9Files:10Diagrams:✓- Chat
Types:5Files:5Diagrams:✓ - Clock
Types:9Files:10Diagrams:✓ - NetworkMonitoring
Types:7Files:8Diagrams:✓ - Notifications
Types:7Files:8Diagrams:✓ - ResourceMonitoring
Types:7Files:8Diagrams:✓ - Throughput
Types:7Files:8Diagrams:✓ - TimeZones
Types:8Files:11Diagrams:✓
- Chat
Demo
Types:0Files:0Diagrams:✓- Airport
Types:4Files:0Diagrams:✓ - Portfolio
Types:5Files:0Diagrams:✓ - StockListBasic
Types:5Files:0Diagrams:✓
- Airport
Games
Types:0Files:0Diagrams:✓- RockPaperScissors
Types:3Files:0Diagrams:✓ - TicTacToe
Types:3Files:0Diagrams:✓
- RockPaperScissors
Last generated: December 28, 2025
Architecture
ThunderPropagator.Channels follows strict architectural patterns enforced through ArchTests:
Channel Structure (Mandatory Components)
Every channel implementation includes:
- {Name}Channel.cs — Inherits
AbstractChannel<TMetadata, TConfiguration> - {Name}ChannelConfiguration.cs — Extends
AbstractChannelConfiguration - {Name}ChannelFeederMessage.cs — Inherits
FeederMessage(data contract) - {Name}ChannelMetadata.cs — Extends
AbstractChannelMetadata - {Name}ChannelExtensions.cs — DI registration via
IServiceCollectionextensions
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)
- Debug:
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:
- All architecture tests pass (
dotnet test Tests/ArchTests) - XML documentation is provided for public APIs
- Follow existing channel/feeder/pipeline patterns
- Add unit tests for new functionality
- 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
Links
- Website: https://www.thunderpropagator.com
- Repository: https://github.com/KiarashMinoo/ThunderPropagator.Channels
- NuGet Packages: GitHub Packages
- Documentation:
/docs - Development Guide:
.github/copilot-instructions.md
Blazingly fast. Cloud-native. Maximum impact. 🚀
| Product | Versions 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. |
-
net10.0
- ThunderPropagator (>= 1.0.1-beta.17)
-
net8.0
- ThunderPropagator (>= 1.0.1-beta.17)
-
net9.0
- ThunderPropagator (>= 1.0.1-beta.17)
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