Osirion.Blazor.Cms.Domain 2.1.3

dotnet add package Osirion.Blazor.Cms.Domain --version 2.1.3
                    
NuGet\Install-Package Osirion.Blazor.Cms.Domain -Version 2.1.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="Osirion.Blazor.Cms.Domain" Version="2.1.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Osirion.Blazor.Cms.Domain" Version="2.1.3" />
                    
Directory.Packages.props
<PackageReference Include="Osirion.Blazor.Cms.Domain" />
                    
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 Osirion.Blazor.Cms.Domain --version 2.1.3
                    
#r "nuget: Osirion.Blazor.Cms.Domain, 2.1.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.
#addin nuget:?package=Osirion.Blazor.Cms.Domain&version=2.1.3
                    
Install Osirion.Blazor.Cms.Domain as a Cake Addin
#tool nuget:?package=Osirion.Blazor.Cms.Domain&version=2.1.3
                    
Install Osirion.Blazor.Cms.Domain as a Cake Tool

Osirion.Blazor.Cms.Domain

NuGet License

Domain layer for the Osirion.Blazor CMS ecosystem, containing core entity definitions, value objects, enums, and domain services.

Overview

The Domain project implements the Domain layer in the Clean Architecture pattern, providing the core business entities and logic for the CMS system. This project has minimal dependencies and serves as the foundation for the entire CMS ecosystem.

Key Components

Entities

Core business objects defined by their identity:

public class ContentItem : Entity<Guid>
{
    public string Path { get; set; } = string.Empty;
    public string Title { get; set; } = string.Empty;
    public string Content { get; set; } = string.Empty;
    public IReadOnlyDictionary<string, object> Metadata { get; set; } 
        = new Dictionary<string, object>();
    // Additional properties
}

Value Objects

Immutable objects defined by their properties:

public class ContentMetadata : ValueObject
{
    public string? Title { get; }
    public string? Description { get; }
    public DateTime? PublishedDate { get; }
    public string? Author { get; }
    public IReadOnlyList<string> Tags { get; } 
    public IReadOnlyList<string> Categories { get; }
    public bool IsFeatured { get; }
    
    // Constructor, Equals, GetHashCode implementations
}

Enumerations

Strong typing for domain concepts:

public enum ContentStatus
{
    Draft,
    Published,
    Archived
}

public enum SortField
{
    Title,
    Date,
    Author,
    Path
}

public enum SortDirection
{
    Ascending,
    Descending
}

Domain Services

Core business logic not naturally fitting into entities:

public interface IContentService
{
    Task<IReadOnlyList<ContentItem>> GetContentItemsAsync(ContentQuery query);
    Task<ContentItem?> GetContentItemByPathAsync(string path);
    Task<IReadOnlyList<string>> GetAvailableTagsAsync();
    Task<IReadOnlyList<string>> GetAvailableCategoriesAsync();
}

Design Principles

This project follows these design principles:

  1. Persistence Ignorance: Domain entities know nothing about how they are stored
  2. Rich Domain Model: Domain entities contain both data and behavior
  3. Immutability: Value objects are immutable
  4. Encapsulation: Internal state is protected
  5. Domain-Driven Design: Modeling based on the ubiquitous language of the domain

Dependencies

The domain layer has minimal dependencies:

  • .NET 8.0/.NET 9.0: Target frameworks
  • Microsoft.Extensions.DependencyInjection: For dependency injection
  • Microsoft.Extensions.Logging.Abstractions: For logging abstractions

License

This project is licensed under the MIT License - see the LICENSE file for details.

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 was computed.  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 (3)

Showing the top 3 NuGet packages that depend on Osirion.Blazor.Cms.Domain:

Package Downloads
Osirion.Blazor.Cms.Core

Core CMS module for Osirion.Blazor - Provides cms management with provider pattern.

Osirion.Blazor.Cms.Application

Application layer for the Osirion.Blazor CMS ecosystem, implementing core business logic, use cases, and application services for content management.

Osirion.Blazor.Cms.Infrastructure

Infrastructure layer for the Osirion.Blazor CMS ecosystem, implementing repositories, external service integrations, and infrastructure concerns.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.1.3 93 5/31/2025
2.1.2 71 5/31/2025
2.1.0 228 5/20/2025