Skip to main content

Introduction

Packages Total Downloads Codecov GitHub last commit GitHub issues Publish NuGet GitHub license

RA.Utilities provides a set of reusable, opinionated building blocks primarily aimed at solving common problems in web API development. The high-level purpose is to reduce boilerplate code, enforce consistency, promote a clean architecture (specifically Vertical Slice Architecture using the CQRS pattern), and improve the overall developer experience. The repository is structured into several solution folders, each mapping to a specific architectural layer:

  • Api/: Contains projects related to the web layer, including API setup, custom middlewares, authentication/authorization helpers, and OpenAPI (Swagger) configuration.
  • Application/: Holds the RA.Utilities.Feature project, which is the core of the application logic and implements the CQRS pattern.
  • Core/: Contains foundational projects with minimal dependencies, such as shared exceptions and constants.
  • Data/: Represents the data access layer, with projects for abstractions and a specific implementation using Entity Framework.
  • Infrastructure/: Houses projects that interact with external systems, like standardizing calls to other APIs.
  • Logging/: Isolates logging as a cross-cutting concern into its own projects.
  • documentation/: Includes documentation as a first-class citizen within the solution.

The solution is broken down into several NuGet packages, each addressing a specific concern like API & Web, Application Logic, Core Building Blocks, Data Access, Integrations, and Logging. In essence, RA.Utilities acts as a "batteries-included" framework to help developers build modern .NET APIs by providing a foundation for a clean architecture, allowing them to focus more on business logic rather than infrastructure setup. The repository is public, licensed under the MIT license, and uses C#.

πŸš€ Purpose & Benefits of RA.Utilities NuGet Packages​

RA.Utilities is a suite of NuGet packages designed to accelerate and standardize.NET web API development. Each package encapsulates best practices and reusable components that help developers build robust, maintainable, and scalable applications with minimal boilerplate.

πŸ”‘ Key Benefits:​

  • 🧱 Modular Architecture: Plug-and-play components for logging, authentication, error handling, and more.
  • πŸ“¦ NuGet-Ready: Easily integrate into your projects via NuGet for fast setup and consistent behavior.
  • 🧭 Clean Design Patterns: Built around CQRS and vertical slice architecture to promote separation of concerns and testability.
  • πŸ“ˆ Developer Productivity: Reduce repetitive code and focus on business logic.
  • πŸ“š Built-in Documentation: Seamless OpenAPI integration for clear and interactive API docs.

Whether you're starting a new project or refactoring an existing one, RA.Utilities helps you build better APIsβ€”faster.

πŸ†š Solution Structure​

RA.Utilities
RA.sln
.editorconfig
Directory.Build.props
Directory.Build.targets
Directory.Packages.props
Api
RA.Utilities.Api
RA.Utilities.Api.Middlewares
RA.Utilities.Api.Results
RA.Utilities.Authentication.JwtBearer
RA.Utilities.Authorization
RA.Utilities.OpenApi
Application
RA.Utilities.Feature
Core
RA.Utilities.Core
RA.Utilities.Core.Constants
RA.Utilities.Core.Exceptions
Data
RA.Utilities.Data.Abstractions
RA.Utilities.Data.Entities
RA.Utilities.Data.EntityFramework
Infrastructure
RA.Utilities.Integrations
Logging
RA.Utilities.Logging.Core
RA.Utilities.Logging.Shared
documentation

πŸ“¦ Packages​

This table provides a quick overview of all the packages available in the RA.Utilities ecosystem, along with their current versions and download statistics from NuGet.

PackageVersionDownloads
Core
RA.Utilities.CoreRA.Utilities.Core version badgeRA.Utilities.Core downloads badge
RA.Utilities.Core.ConstantsRA.Utilities.Core.Constants version badgeRA.Utilities.Core.Constants downloads badge
RA.Utilities.Core.ExceptionsRA.Utilities.Core.Exceptions version badgeRA.Utilities.Core.Exceptions downloads badge
Api
RA.Utilities.ApiRA.Utilities.Api version badgeRA.Utilities.Api downloads badge
RA.Utilities.Api.MiddlewaresRA.Utilities.Api.Middlewares version badgeRA.Utilities.Api.Middlewares downloads badge
RA.Utilities.Api.ResultsRA.Utilities.Api.Results version badgeRA.Utilities.Api.Results downloads badge
RA.Utilities.Authentication.JwtBearerRA.Utilities.Authentication.JwtBearer version badgeRA.Utilities.Authentication.JwtBearer downloads badge
RA.Utilities.AuthorizationRA.Utilities.Authorization version badgeRA.Utilities.Authorization downloads badge
RA.Utilities.OpenApiRA.Utilities.OpenApi version badgeRA.Utilities.OpenApi downloads badge
Application
RA.Utilities.FeatureRA.Utilities.Feature version badgeRA.Utilities.Feature downloads badge
Data
RA.Utilities.Data.AbstractionsRA.Utilities.Data.Abstractions version badgeRA.Utilities.Data.Abstractions downloads badge
RA.Utilities.Data.EntitiesRA.Utilities.Data.Entities version badgeRA.Utilities.Data.Entities downloads badge
RA.Utilities.Data.EntityFrameworkRA.Utilities.Data.EntityFramework version badgeRA.Utilities.Data.EntityFramework downloads badge
Infrastructure
RA.Utilities.IntegrationsRA.Utilities.Integrations version badgeRA.Utilities.Integrations downloads badge
Logging
RA.Utilities.Logging.CoreRA.Utilities.Logging.Core version badgeRA.Utilities.Logging.Core downloads badge
RA.Utilities.Logging.SharedRA.Utilities.Logging.Shared version badgeRA.Utilities.Logging.Shared downloads badge