Skip to content

KiarashMinoo/ThunderPropagator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

972 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ThunderPropagator

ThunderPropagator is a cutting-edge software solution designed to redefine real-time data streaming. Our mission is to provide effortless, blazingly fast, and cloud-native streaming capabilities for maximum impact. This repository contains the foundational libraries, ThunderPropagator.Application and ThunderPropagator.Infrastructure, which empower developers to build scalable, high-performance streaming applications with ease.

These libraries support .NET 9 and .NET 8, and are configured to work across multiple platforms, including ARM64, x64, x86, and AnyCPU. They are available as NuGet packages and can be installed from GitHub Packages: https://nuget.pkg.github.com/KiarashMinoo/index.json.


Table of Contents


Overview

ThunderPropagator is designed to revolutionize real-time data streaming by providing:

  • Effortless Integration: Simple and intuitive APIs for seamless integration into your applications.
  • Blazingly Fast Performance: Optimized for low-latency, high-throughput streaming.
  • Cloud-Native Architecture: Built for modern cloud environments, enabling scalability and resilience.
  • Cross-Platform Support: Compatible with ARM64, x64, x86, and AnyCPU platforms.

Whether you're building real-time analytics, live event processing, or IoT data pipelines, ThunderPropagator empowers you to deliver maximum impact with minimal effort.


Features

  • Multi-Protocol Support: WebSockets, MQTT 5.0, QUIC, WebTransport, and custom streaming protocols
  • Cross-Platform Support: Works seamlessly on ARM64, x64, x86, and AnyCPU platforms
  • .NET Compatibility: Fully compatible with .NET 9 and .NET 8
  • High Performance: Optimized for low-latency, high-throughput streaming with backpressure control
  • Cloud-Native Architecture: Built for modern cloud environments with built-in scalability and resilience
  • Real-time Channels: Advanced channel management with subscription handling and message distribution
  • Comprehensive Documentation: 100% coverage with 60+ documented modules
  • GitHub Packages: Easily installable via GitHub Packages repository

Supported Platforms

The projects support the following platforms:

  • ARM64
  • x64
  • x86
  • AnyCPU

Both Debug and Release configurations are available for all platforms.


Installation

Step 1: Add GitHub Packages NuGet Repository

To install the libraries as NuGet packages, you need to add the GitHub Packages repository to your NuGet configuration.

Using Visual Studio:

  1. Open Visual Studio
  2. Go to Tools > NuGet Package Manager > Package Manager Settings
  3. Under Package Sources, click the + button to add a new source
  4. Enter the following details:
    • Name: GitHub-KiarashMinoo
    • Source: https://nuget.pkg.github.com/KiarashMinoo/index.json
  5. Click Update and then OK

Using the Command Line:

Add the NuGet source using the following command:

dotnet nuget add source --name GitHub-KiarashMinoo --source https://nuget.pkg.github.com/KiarashMinoo/index.json

Create or Update nuget.config

The repository includes a nuget.config file configured for GitHub Packages. If you need to create your own, here's the configuration:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <!-- Public nuget.org first -->
        <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
        <!-- OWNER = org or user that OWNS the package feed -->
        <add key="github" value="https://nuget.pkg.github.com/KiarashMinoo/index.json" />
    </packageSources>

    <!-- Put credentials here or (better) in user-level NuGet.config -->
    <packageSourceCredentials>
        <github>
            <add key="Username" value="KiarashMinoo" />
            <add key="ClearTextPassword" value="your-github-token" />
        </github>
    </packageSourceCredentials>

    <!-- Optional but recommended: only send your private IDs to GitHub -->
    <packageSourceMapping>
        <packageSource key="github">
            <package pattern="ThunderPropagator.*" />
        </packageSource>
        <packageSource key="nuget.org">
            <package pattern="*" />
        </packageSource>
    </packageSourceMapping>
</configuration>

Place the nuget.config file in the root of your solution or project directory. This ensures that all projects in the solution can access the GitHub Packages repository.

Step 2: Verify the Configuration

To verify that the GitHub Packages repository is correctly configured, you can use the following command in the terminal:

dotnet nuget list source

This will list all configured NuGet sources. You should see something like this in the output:

Registered Sources:
  1.  nuget.org [Enabled]
      https://api.nuget.org/v3/index.json
  2.  github [Enabled]
      https://nuget.pkg.github.com/KiarashMinoo/index.json

Step 3: Install the NuGet Packages

You can now install the packages using the following commands:

For ThunderPropagator.Application:

dotnet add package ThunderPropagator.Application

For ThunderPropagator.Infrastructure:

dotnet add package ThunderPropagator.Infrastructure

Alternatively, you can install the packages via the NuGet Package Manager in Visual Studio.

Documentation

Comprehensive documentation is available in the docs/ directory. The documentation is auto-generated from source code with complete API references, architecture diagrams, usage examples, and best practices.

πŸ“š Documentation Portal β€” Main entry point with quick start guide and architecture overview

Documentation Catalog

The following areas are fully documented with types, files, diagrams, and examples:

Application Layer Types:80+ Files:112 Diagrams:βœ“

Application β€” Core abstractions for channels, feeders, pipelines, and subscriptions

  • Channels Types:8 Files:13 Diagrams:βœ“ β€” Real-time channel management with subscriptions and snapshots
    • ChannelProgramsDescriptors Types:11 Files:13 Diagrams:βœ“ β€” Field schema definitions and type descriptors
      • DataTypes Types:13 Files:13 Diagrams:βœ— β€” Type-specific descriptor implementations
    • Contexts Types:4 Files:4 Diagrams:βœ“ β€” Request/response/push context objects
    • Exceptions Types:6 Files:6 Diagrams:βœ— β€” Channel-specific exception types
    • Metadata Types:5 Files:8 Diagrams:βœ“ β€” Authentication, authorization, snapshot configuration
    • Snapshots Types:3 Files:6 Diagrams:βœ“ β€” State persistence and recovery handlers
      • Recovery Types:2 Files:2 Diagrams:βœ— β€” Recovery handler abstractions
    • Subscribers Types:8 Files:8 Diagrams:βœ“ β€” Subscription filtering and management
  • Collections Types:6 Files:6 Diagrams:βœ— β€” Specialized collections for routing and forms
  • Events Types:1 Files:1 Diagrams:βœ“ β€” Event interfaces and implementations
    • Pushers Types:2 Files:2 Diagrams:βœ— β€” Push event abstractions
    • Receivers Types:2 Files:2 Diagrams:βœ— β€” Receive event abstractions
  • Feeders Types:10 Files:12 Diagrams:βœ“ β€” Data source abstractions feeding channels
  • HealthChecks Types:2 Files:2 Diagrams:βœ— β€” Health monitoring interfaces
  • Helpers Types:3 Files:3 Diagrams:βœ— β€” Utility classes (C# scripting, request context)
  • LicenseManagers Types:1 Files:1 Diagrams:βœ— β€” License validation interop
  • Logging Types:1 Files:1 Diagrams:βœ— β€” Logging utilities
  • Metrics Types:3 Files:3 Diagrams:βœ— β€” Telemetry and observability
  • Pipelines Types:1 Files:1 Diagrams:βœ“ β€” Middleware for request/response processing
    • Pushers Types:2 Files:3 Diagrams:βœ— β€” Push pipeline abstractions
    • Receivers Types:4 Files:7 Diagrams:βœ“ β€” Receive pipeline abstractions
      • Attributes Types:3 Files:3 Diagrams:βœ— β€” Pipeline attribute decorators

Infrastructure Layer Types:45+ Files:68 Diagrams:βœ“

Infrastructure β€” Protocol implementations and connection management

  • Channels Types:7 Files:11 Diagrams:βœ“ β€” Infrastructure channel coordination
    • Snapshots/Recovery Types:5 Files:5 Diagrams:βœ“ β€” Concrete recovery implementations (Redis, MongoDB, PostgreSQL)
  • Contexts Types:4 Files:4 Diagrams:βœ“ β€” Client request/response contexts
  • Events Types:2 Files:2 Diagrams:βœ“ β€” Infrastructure event handlers
  • Exceptions Types:1 Files:1 Diagrams:βœ— β€” Infrastructure-specific exceptions
  • Extensions Types:12 Files:13 Diagrams:βœ“ β€” DI and service registration
  • Feeders Types:5 Files:5 Diagrams:βœ“ β€” Infrastructure-level feeders
  • Pipelines Types:2 Files:2 Diagrams:βœ“ β€” Pipeline hierarchy invokers
  • Protocols Types:13 Files:13 Diagrams:βœ“ β€” Protocol handlers and containers
    • InfiniteDataStream Types:3 Files:3 Diagrams:βœ— β€” Custom binary streaming
    • Mqtt Types:3 Files:3 Diagrams:βœ“ β€” MQTT 5.0 broker integration
    • Quic Types:3 Files:3 Diagrams:βœ“ β€” QUIC protocol support
    • WebSockets Types:3 Files:3 Diagrams:βœ“ β€” WebSocket connection handling
    • WebTransport Types:3 Files:3 Diagrams:βœ“ β€” WebTransport over HTTP/3
  • Pushers Types:2 Files:2 Diagrams:βœ— β€” Push pipeline implementations
  • Receivers β€” Receive pipeline implementations
    • Pipelines β€” Pipeline catalog and routing
      • Authentication Types:1 Files:1 Diagrams:βœ“ β€” Authentication handlers (Basic, OAuth2)
      • Authorization Types:1 Files:1 Diagrams:βœ“ β€” Authorization handlers (Role, Policy)
      • PingPong Types:1 Files:1 Diagrams:βœ— β€” Health check ping/pong
      • RequestMetadata Types:1 Files:1 Diagrams:βœ“ β€” Channel metadata retrieval
      • Subscribe Types:1 Files:1 Diagrams:βœ“ β€” Subscription management
      • Unsubscribe Types:1 Files:1 Diagrams:βœ“ β€” Unsubscription handling

Automation & Tooling

scripts Scripts:8 Diagrams:βœ“ β€” PowerShell automation

  • CI/CD Scripts β€” Automated versioning, building, and publishing
    • Delete-GitHubPackages.ps1 β€” Package cleanup with wildcard filtering
    • Generate-Changelog.ps1 β€” Keep-a-Changelog format generator
    • Generate-ReleaseNotes.ps1 β€” Advanced release notes with diff analysis
    • pack-all-platforms.ps1 β€” Parallel multi-platform builds
    • pack-solution.ps1 β€” Core .NET pack worker
    • publish-packages.ps1 β€” NuGet publishing with visibility control
    • update-version.ps1 β€” Beta/release version management

Package Documentation

Package Version Description Documentation
ThunderPropagator.Application 1.0.1-beta.12 Core application layer with channels, feeders, pipelines Application Layer
ThunderPropagator.Infrastructure 1.0.1-beta.12 Infrastructure layer with protocol implementations Infrastructure Layer
ThunderPropagator.BuildingBlocks 1.0.1-beta.12 Core building blocks and utilities Dependency
ThunderPropagator.BuildingBlocks.Modules 1.0.1-beta.12 Module system and DI extensions Dependency

Documentation Features

  • βœ… Complete API Coverage β€” All public types documented with signatures, descriptions, and usage
  • βœ… Architecture Diagrams β€” Mermaid diagrams for flows, sequences, and class structures
  • βœ… Realistic Examples β€” Production-ready code samples (no test code)
  • βœ… Cross-References β€” Extensive linking between related documentation
  • βœ… Performance Notes β€” Optimization tips and scalability guidance
  • βœ… Protocol Guides β€” WebSocket, MQTT 5.0, QUIC, WebTransport details
  • βœ… Dependency Tracking β€” ThunderPropagator package usage documented per area

Last generated: December 28, 2025

License

This project is licensed under the MIT License.

Β© 2024-2025 ThunderPropagator. All rights reserved.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages