CodeDesignPlus.Net.PubSub 0.2.0-alpha.5

This is a prerelease version of CodeDesignPlus.Net.PubSub.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package CodeDesignPlus.Net.PubSub --version 0.2.0-alpha.5                
NuGet\Install-Package CodeDesignPlus.Net.PubSub -Version 0.2.0-alpha.5                
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="CodeDesignPlus.Net.PubSub" Version="0.2.0-alpha.5" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add CodeDesignPlus.Net.PubSub --version 0.2.0-alpha.5                
#r "nuget: CodeDesignPlus.Net.PubSub, 0.2.0-alpha.5"                
#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.
// Install CodeDesignPlus.Net.PubSub as a Cake Addin
#addin nuget:?package=CodeDesignPlus.Net.PubSub&version=0.2.0-alpha.5&prerelease

// Install CodeDesignPlus.Net.PubSub as a Cake Tool
#tool nuget:?package=CodeDesignPlus.Net.PubSub&version=0.2.0-alpha.5&prerelease                

<br /> <p align="center"> <a href="https://github.com/codedesignplus/CodeDesignPlus.Net.PubSub/README"> <img src="https://i.imgur.com/PwbGy0o.png" alt="Logo"> </a>

<h3 align="center">CodeDesignPlus.Net.PubSub</h3>

<p align="center"> .NET Core archetype for efficient development, unit testing, and continuous integration of NuGet libraries. <br /> <a href="https://codedesignplus.com"> <strong>Explore the docs »</strong> </a> <br /> <br /> <a href="https://github.com/codedesignplus/CodeDesignPlus.Net.Sdk/issues"> <img src="https://img.shields.io/github/issues/codedesignplus/CodeDesignPlus.Net.Sdk?color=0088ff&style=for-the-badge&logo=github" alt="codedesignplus/CodeDesignPlus.Net.PubSub's issues"/> </a> <a href="https://github.com/codedesignplus/CodeDesignPlus.Net.Sdk/pulls"> <img src="https://img.shields.io/github/issues-pr/codedesignplus/CodeDesignPlus.Net.Sdk?color=0088ff&style=for-the-badge&logo=github" alt="codedesignplus/CodeDesignPlus.Net.PubSub's pull requests"/> </a> <br />
<br /> <img alt="sonarcloud" src="https://sonarcloud.io/images/project_badges/sonarcloud-white.svg" width="100"> <br /> <img alt="Quality Gate Status" src="https://sonarcloud.io/api/project_badges/measure?project=CodeDesignPlus.Net.PubSub&metric=alert_status" />
<img alt="Security Rating" src="https://sonarcloud.io/api/project_badges/measure?project=CodeDesignPlus.Net.PubSub&metric=security_rating"/> <img alt="Reliability Rating" src="https://sonarcloud.io/api/project_badges/measure?project=CodeDesignPlus.Net.PubSub&metric=reliability_rating" /> <img alt="Vulnerabilities" src="https://sonarcloud.io/api/project_badges/measure?project=CodeDesignPlus.Net.PubSub&metric=vulnerabilities" /> <img alt="Bugs" src="https://sonarcloud.io/api/project_badges/measure?project=CodeDesignPlus.Net.PubSub&metric=bugs" /> <img alt="Code Smells" src="https://sonarcloud.io/api/project_badges/measure?project=CodeDesignPlus.Net.PubSub&metric=code_smells" /> <img alt="Coverage" src="https://sonarcloud.io/api/project_badges/measure?project=CodeDesignPlus.Net.PubSub&metric=coverage" /> </p> </p>

Table of Contents

About The Project

About Me Hello! I am an archetype designed to assist you in creating .NET Core libraries distributed as NuGet packages. I've been crafted with the best practices and common patterns in mind to make your life easier.

Key Features:

  • Options Pattern: I facilitate configuration and customization of your libraries using the options pattern.

  • Dependency Injection: I employ the mechanism of dependency injection to ensure effective decoupling and efficient service management. This not only eases testing and maintainability of your code but also promotes a modular and flexible structure.

  • Abstractions: With the interfaces and abstract classes I offer, you can develop decoupled and maintainable components.

  • Unit Tests: I include a dedicated project for unit tests, equipped with tools to validate data annotations, loggers, and more.

  • Node Utilities: I come packed with several Node.js utilities, like linters and Commitizen, to assist you in adhering to commit conventions.

Scripts and Dependencies:

In the package.json, I offer several handy scripts:

  • Tools: Install global .NET tools like dotnet-sonarscanner.
  • Installation: Restore necessary dependencies for your project.
  • Tests: Execute all unit tests.
  • Compilation: Compile your solution.
  • Formatting: Format your code to keep it neat and consistent.
  • Preparation: Set up husky, a tool to manage git hooks.

Furthermore, I integrate various dependencies and devDependencies to streamline version control, linting, and commit management, such as commitizen, husky, and lint-staged.

Built With

Efficient and maintainable software creation not only demands coding skills but also the right tools that fit our needs and streamline our workflow. The tools and technologies we employ often mirror our priorities in terms of efficiency, security, collaboration, and other pivotal aspects of software development. Below are the cornerstone tools and technologies that underpin this archetype:

  • .NET SDK 8: The necessary SDK for building applications in .NET SDK 8.
  • Node.js: A JavaScript runtime environment that enables server-side application development.
  • Visual Studio Community 2022: A comprehensive IDE tailored for .NET development.
  • VS Code: A lightweight yet powerful code editor with extensive extensibility capabilities.

This archetype comes with a preconfigured continuous integration pipeline, streamlining the automation of crucial tasks such as testing, building, packaging, and deployment. Thanks to this pipeline:

  • Full Automation: Tests and builds are automatically run with each push, ensuring the code meets quality standards.
  • Semantic Versioning Control: Using codedesignplus/semver-git-version, versions are automatically generated based on commits, ensuring coherent and predictable version management.
  • Code Quality: With integrated SonarQube, the code is analyzed for quality and security issues.
  • Automatic Publishing: Packages are automatically published to NuGet and GitHub Package Registry under certain conditions, making distribution straightforward.
  • Change Management: With tools like mikepenz/release-changelog-builder-action, a changelog is automatically created for each new version.

Beyond the continuous integration pipeline, this archetype brings several benefits that enhance and standardize the development and collaboration process:

  • Predefined Issue Templates: They simplify the creation of bug reports, new feature requests, security reports, and more, ensuring all necessary information is provided in a structured manner when creating a new issue.
  • Standardized Contribution: The CONTRIBUTING.md file offers clear guidelines for those wishing to contribute to the project.
  • Code of Conduct: CODE_OF_CONDUCT.md sets the norms to ensure a respectful and productive collaboration environment.
  • Code Owners: The CODEOWNERS file outlines those responsible for reviewing and approving changes.
  • Pull Request Template: Every new pull request will follow a defined structure, simplifying the review process.
  • Security Guidelines: SECURITY.md provides guidelines for reporting security vulnerabilities.
  • Bot Configuration: With files like issue_label_bot.yaml, tasks like auto-labeling issues based on their content can be automated.
  • License: LICENSE.md details how others can use or contribute to the project.

Getting Started

To dive into this archetype and set up your development environment, follow these steps:

For Visual Studio Community 2022:

  1. Open the .sln file with Visual Studio Community 2022.
  2. Select Build > Restore NuGet Packages from the menu to restore dependencies.
  3. Compile the project by selecting Build > Build Solution.
  4. Run the unit tests by selecting Test > Run All Tests.
  5. To package, right-click on the project you wish to package and select Pack.

For VS Code:

  1. Open the project folder in VS Code.

  2. Launch the integrated terminal (Ctrl + ~).

  3. Install the Recommended Extensions:

    code --install-extension amazonwebservices.aws-toolkit-vscode
    code --install-extension dbaeumer.vscode-eslint
    code --install-extension eamodio.gitlens
    code --install-extension esbenp.prettier-vscode
    code --install-extension github.vscode-github-actions
    code --install-extension ms-azuretools.vscode-docker
    code --install-extension ms-dotnettools.csharp
    code --install-extension ms-dotnettools.vscode-dotnet-runtime
    code --install-extension ms-vscode-remote.remote-containers
    code --install-extension ms-vscode-remote.remote-wsl
    code --install-extension ms-vscode.cpptools
    code --install-extension ms-vscode.cpptools-extension-pack
    code --install-extension ms-vscode.cpptools-themes
    code --install-extension nrwl.angular-console
    code --install-extension PKief.material-icon-theme
    code --install-extension SonarSource.sonarlint-vscode
    code --install-extension Tyriar.lorem-ipsum
    code --install-extension vivaxy.vscode-conventional-commits
    
  4. Build and Management Procedures:

    dotnet tool install --global dotnet-sonarscanner
    dotnet restore
    dotnet build
    dotnet test
    dotnet format
    npm install
    npm run prepare
    dotnet pack -c Release /p:Version=1.0.0  # Ensure to set the appropriate version
    
  5. Recommended Extensions for VS Code: These extensions enrich the development experience within VS Code:

    • AWS Toolkit
    • ESLint
    • GitLens
    • Prettier
    • GitHub Actions
    • Docker
    • C#
    • .NET Runtime
    • Remote Development (for containers, WSL, etc.)
    • CMake Tools & Extensions
    • Angular Console
    • Material Icon Theme
    • SonarLint
    • Lorem Ipsum
    • Conventional Commits

Usage

For more information regarding the library, you can visit our documentation at <a target="_blank" href="https://codedesignplus.com">CodeDesignPlus Doc</a>

Roadmap

Refer to issues for a list of proposed features and known issues.

Contributing

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b features/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Contact

CodeDesignPlus - @CodeDesignPlus - codedesignplus@outlook.com

Project Link: CodeDesignPlus.Net.PubSub

Acknowledgements

We want to thank each member of the Latin development community in which we participate, contributing content daily to continue growing together.

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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on CodeDesignPlus.Net.PubSub:

Package Downloads
CodeDesignPlus.Net.EventStore.PubSub.Abstractions

CodeDesignPlus.Net.EventStore.PubSub.Abstractions provides essential interfaces and abstract classes for implementing publish-subscribe patterns in event sourcing within .NET Core applications. This library defines core contracts and abstractions that facilitate a clean and maintainable architecture for event-driven systems, enabling better testing and extensibility.

CodeDesignPlus.Net.RabbitMQ.Abstractions

CodeDesignPlus.Net.RabbitMQ.Abstractions provides essential interfaces and abstract classes for integrating RabbitMQ with .NET Core applications. This library defines core contracts and abstractions that facilitate a clean and maintainable architecture for event-driven systems using RabbitMQ, enabling better testing and extensibility.

CodeDesignPlus.Net.Kafka.Abstractions

CodeDesignPlus.Net.Kafka.Abstractions provides essential interfaces and abstract classes for integrating Apache Kafka with .NET Core applications. This library defines core contracts and abstractions that facilitate a clean and maintainable architecture for event-driven systems using Kafka, enabling better testing and extensibility.

CodeDesignPlus.Net.Redis.PubSub.Abstractions

CodeDesignPlus.Net.Redis.PubSub.Abstractions provides essential interfaces and abstract classes for implementing publish-subscribe patterns with Redis in .NET Core applications. This library defines core contracts and abstractions that facilitate a clean and maintainable architecture for event-driven systems using Redis, enabling better testing and extensibility.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.5.0-beta.14 39 11/8/2024
0.5.0-beta.13 34 11/7/2024
0.5.0-beta.11 34 11/6/2024
0.5.0-beta.9 40 11/3/2024
0.5.0-beta.6 38 11/1/2024
0.5.0-beta.4 42 10/31/2024
0.3.0-rc.3 41 10/28/2024
0.3.0-beta.3 38 10/28/2024
0.3.0-alpha.3 37 10/28/2024
0.2.0-rc.27 35 10/25/2024
0.2.0-rc.18 59 10/1/2024
0.2.0-beta.27 36 10/25/2024
0.2.0-beta.18 117 10/1/2024
0.2.0-alpha.27 40 10/25/2024
0.2.0-alpha.26 36 10/25/2024
0.2.0-alpha.25 39 10/25/2024
0.2.0-alpha.24 36 10/25/2024
0.2.0-alpha.23 37 10/24/2024
0.2.0-alpha.22 40 10/24/2024
0.2.0-alpha.21 39 10/23/2024
0.2.0-alpha.20 45 10/22/2024
0.2.0-alpha.19 54 10/21/2024
0.2.0-alpha.18 49 10/1/2024
0.2.0-alpha.17 49 10/1/2024
0.2.0-alpha.16 47 9/30/2024
0.2.0-alpha.15 53 9/30/2024
0.2.0-alpha.14 45 9/30/2024
0.2.0-alpha.13 45 9/29/2024
0.2.0-alpha.12 50 9/29/2024
0.2.0-alpha.11 45 9/29/2024
0.2.0-alpha.10 50 9/28/2024
0.2.0-alpha.9 48 9/28/2024
0.2.0-alpha.7 50 9/28/2024
0.2.0-alpha.6 51 9/28/2024
0.2.0-alpha.5 43 9/28/2024
0.2.0-alpha.4 50 9/28/2024
0.2.0-alpha.3 66 9/1/2024
0.2.0-alpha.2 44 9/28/2024
0.1.2-alpha.1 68 8/24/2024
0.1.2-alpha.0 63 8/24/2024
0.1.1 192 8/23/2024
0.1.1-alpha.19 72 8/23/2024