DotNetBrightener.Mapper.Dashboard 2026.0.2

There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package DotNetBrightener.Mapper.Dashboard --version 2026.0.2
                    
NuGet\Install-Package DotNetBrightener.Mapper.Dashboard -Version 2026.0.2
                    
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="DotNetBrightener.Mapper.Dashboard" Version="2026.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DotNetBrightener.Mapper.Dashboard" Version="2026.0.2" />
                    
Directory.Packages.props
<PackageReference Include="DotNetBrightener.Mapper.Dashboard" />
                    
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 DotNetBrightener.Mapper.Dashboard --version 2026.0.2
                    
#r "nuget: DotNetBrightener.Mapper.Dashboard, 2026.0.2"
                    
#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.
#:package DotNetBrightener.Mapper.Dashboard@2026.0.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DotNetBrightener.Mapper.Dashboard&version=2026.0.2
                    
Install as a Cake Addin
#tool nuget:?package=DotNetBrightener.Mapper.Dashboard&version=2026.0.2
                    
Install as a Cake Tool

DotNetBrightener.Mapper.Dashboard

Copyright © 2017 - 2026 Vampire Coder (formerly DotnetBrightener)

Interactive web dashboard that auto-discovers and visualizes every [MappingTarget<T>] usage in your ASP.NET Core app. Think of it as a Swagger UI, but for your compile-time object mappings instead of HTTP endpoints.

Why?

When a project accumulates dozens of source entities mapped to many DTOs, it gets hard to track which properties are included, excluded, renamed, or nested. This dashboard gives you a single page to inspect all of that at a glance — no XML docs or code navigation needed.

Install

dotnet add package DotNetBrightener.Mapper.Dashboard

Get Running in 30 Seconds

// Program.cs
using DotNetBrightener.Mapper.Dashboard;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDotNetBrightenerMapperDashboard();

var app = builder.Build();
app.MapDotNetBrightenerMapperDashboard();
app.Run();

Fire up the app and open https://localhost:5001/dnb-mapper.

What You See

Section Details
Source type cards Expandable cards per source entity — click to reveal properties and all targets
Source properties Name, friendly type (int?, List<T>), modifiers (Nullable, Required, Init, Collection)
Target cards Each [MappingTarget] DTO: type kind, feature flags, excluded/included props, member count
Feature badges Green check / red X for Constructor, Projection, ToSource
Search bar Filter by source or target name
Dark mode Follows your OS setting unless overridden

Tweaking the Defaults

builder.Services.AddDotNetBrightenerMapperDashboard(options =>
{
    // Where the dashboard lives (default: "/dnb-mapper")
    options.RoutePrefix = "/mapper-inspector";

    // Page title shown in the browser tab
    options.Title = "Acme Corp — Mapping Inspector";

    // Brand color for headings and badges
    options.AccentColor = "#0ea5e9";   // sky blue

    // Force dark mode on first load (default: follows OS)
    options.DefaultDarkMode = true;

    // Turn off the JSON API if you only need the HTML view
    options.EnableJsonApi = false;
});

Lock It Behind Auth

builder.Services.AddDotNetBrightenerMapperDashboard(options =>
{
    options.RequireAuthentication = true;
    options.AuthenticationPolicy = "AdminOnly";   // ties into your existing policy
});

Scan Extra Assemblies

The dashboard auto-scans the entry assembly + its references. Point it at more:

builder.Services.AddDotNetBrightenerMapperDashboard(options =>
{
    options.AdditionalAssemblies.Add(typeof(ExternalDto).Assembly);
});

Include System Assemblies

Off by default to keep things fast. Flip it on if you map from Microsoft.* / System.* types:

builder.Services.AddDotNetBrightenerMapperDashboard(options =>
{
    options.IncludeSystemAssemblies = true;
});

HTTP Endpoints

URL What it returns
GET /dnb-mapper Full HTML dashboard
GET /dnb-mapper/api/dnb-mapping-types Machine-readable JSON of every discovered mapping

JSON API Shape

A quick taste — the real response includes every source member and target member:

[
  {
    "sourceTypeName": "MyApp.Models.User",
    "sourceTypeSimpleName": "User",
    "sourceTypeNamespace": "MyApp.Models",
    "sourceMembers": [
      { "name": "Id", "typeName": "int", "isNullable": false, "isRequired": false, "isCollection": false }
    ],
    "targets": [
      {
        "targetTypeName": "MyApp.DTOs.UserDto",
        "targetTypeSimpleName": "UserDto",
        "typeKind": "record",
        "hasConstructor": true,
        "hasProjection": true,
        "hasToSource": false,
        "excludedProperties": ["PasswordHash"],
        "members": [
          { "name": "Id", "typeName": "int", "isNullable": false, "isInitOnly": true }
        ]
      }
    ]
  }
]

Real-World Example

// Entity
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public string PasswordHash { get; set; }
    public List<Order> Orders { get; set; }
}

// Full DTO minus the hash
[MappingTarget<User>(nameof(User.PasswordHash))]
public partial record UserDto;

// Minimal DTO for dropdowns / lists
[MappingTarget<User>(Include = new[] { nameof(User.Id), nameof(User.Name) })]
public partial record UserSummaryDto;

Open the dashboard and you'll see the User card with both targets: UserDto (4 members, PasswordHash excluded) and UserSummaryDto (2 members, Id + Name only).

Requirements

  • .NET 10.0+ with ASP.NET Core
  • A project that references DotNetBrightener.Mapper (the source generator)

Ecosystem

Package Purpose
DotNetBrightener.Mapper Roslyn source generator — produces the mapping code at compile time
DotNetBrightener.Mapper.Attributes [MappingTarget<T>], [MapFrom], [GenerateDtos] — the attributes the generator reads
DotNetBrightener.Mapper.Mapping Runtime helpers — .ToTarget(), .SelectTargets(), .ToSource() extension methods
DotNetBrightener.Mapper.Mapping.EFCore EF Core integration — use generated projections in LINQ queries
Product Compatible and additional computed target framework versions.
.NET 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
2026.0.3-preview-777 85 5/20/2026
2026.0.3-preview-773 95 4/24/2026
2026.0.3-preview-772 100 4/3/2026
2026.0.3-preview-770 96 4/2/2026
2026.0.3-preview-769 97 4/2/2026
2026.0.2 106 4/2/2026
2026.0.2-preview-v2026-0-1-755 95 3/27/2026
2026.0.2-preview-759 93 4/1/2026
2026.0.2-preview-758 97 3/29/2026
2026.0.2-preview-757 103 3/29/2026
2026.0.2-preview-756 102 3/27/2026
2026.0.2-preview-754 89 3/27/2026
2026.0.1 100 3/27/2026
2026.0.1-preview-752 98 3/26/2026
2026.0.1-preview-750 99 3/26/2026
2026.0.1-preview-749 102 3/25/2026
2026.0.1-preview-748 100 3/23/2026
2026.0.1-preview-742 95 3/22/2026