HopFrame.Core 4.0.1

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

HopFrame

HopFrame is a lightweight extension library for existing .NET applications that adds administrative Blazor pages on top of your current data model. It connects to your configured databases and provides ready‑to‑use CRUD views so you can browse, filter, create, update, and delete data without writing custom admin UIs.

HopFrame is ideal for teams who want an instant admin interface without maintaining their own Blazor pages.


Features

  • Plug‑in admin UI
    Drop‑in Blazor pages that integrate into an existing ASP.NET Core / Blazor application.

  • Database‑driven views
    Reads metadata from your configured data sources and exposes entities as editable tables and forms.

  • Full CRUD support
    Create, read, update, and delete records directly from the browser.

  • Filtering & sorting
    Quickly navigate large datasets with built‑in filtering and sorting capabilities.

  • Minimal boilerplate
    Focus on your domain logic—HopFrame handles the generic admin UI.


Getting started

1. Install the package

dotnet add package HopFrame.Web

2. Register HopFrame in your application

In your Program.cs or Startup.cs:

var builder = WebApplication.CreateBuilder(args);

// Register your DbContexts as usual
builder.Services.AddDbContext<AppDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

// Configure HopFrame
builder.Services.AddHopFrame(config => {
    config.AddDbContext<DatabaseContext>();
});

var app = builder.Build();

// Map HopFrame admin endpoints
app.MapHopFrame();

// Or for existing blazor projects
app.MapRazorComponents<App>()
    .AddInteractiveServerRenderMode()
    .AddHopFrame(); // Add HopFrame to the razor container

app.Run();
Additional configuration for Web APIs

Add the following code to your .csproj file:

<PropertyGroup>
    <RequiresAspNetWebAssets>true</RequiresAspNetWebAssets>
</PropertyGroup>

3. Navigate to the admin UI

After starting your application, open the configured admin route, for example:

https://localhost:5001/admin

You’ll see the HopFrame admin interface with your connected entities.


Configuration

  • Entity discovery:
    HopFrame can be configured to scan your DbContexts and expose selected entities.
  • Access control:
    Protect the admin area using your existing authentication/authorization setup (e.g. policies, roles).
  • Customization:
    Override default pages, labels, or visibility for specific entities and properties.

Configuration example

builder.Services.AddHopFrame(config => {
    config.AddDbContext<DatabaseContext>();

    config.Table<User>(table => {
        table.SetDescription("The user dataset. It contains all information for the users of the application.");

        table.Property(u => u.Password)
            .Listable(false)
            .SetType(PropertyType.Password);

        table.AddProperty<string>("Username")
            .SetFormatter(u => $"{u.FirstName}.{u.LastName}".ToLower())
            .VisibleInEditor(false)
            .Listable(false);

        table.Property(u => u.Email)
            .SetValidator(input => {
                if (!input.Contains('.'))
                    return ["Email needs to contain a '.'"];

                return [];
            });

        table.SetPreferredProperty(u => u.Email);
    });

    config.Table<Post>(table => {
        table.SetDescription("The posts dataset. It contains all posts sent via the application.");
        table.SetEditClaim("edit.post");
    });

    config.Table<Typer>(table => {
        table.Property(t => t.LongText)
            .SetType(PropertyType.TextArea)
            .SetSizeRange(3..10);

        table.Property(t => t.Password)
            .SetType(PropertyType.Password);

        table.Property(t => t.PhoneNumber)
            .SetType(PropertyType.PhoneNumber);

        table.SetViewClaim("views.typer");
    });

    config.AddCustomPage(new() {
        Name = "Custom Page",
        Description = "This is a custom page",
        Icon = Icons.Material.Filled.House,
        Route = "/",
        OrderIndex = 2
    });

    config.SetCompanyName("Example");

    config.AddRepository<VirtualRepo, Dictionary<string, object?>>(table => {
        table.SetDisplayName("Addresses");
        table.SetRoute("addresses");
        
        table.AddProperty<int>("Id");
        table.AddProperty<string>("Country");
        table.AddProperty<string>("City");
        table.AddProperty<string>("Street");
        
        table.AddProperty<User>("Owner")
            .IsRelation(config.Table<User>());
    });
});

For more examples refer to the debug projects in the repository.

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 (1)

Showing the top 1 NuGet packages that depend on HopFrame.Core:

Package Downloads
HopFrame.Web

HopFrame is a lightweight extension library for existing .NET applications that adds administrative Blazor pages on top of your current data model. It connects to your configured databases and provides ready‑to‑use CRUD views so you can browse, filter, create, update, and delete data without writing custom admin UIs.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
4.0.1 50 3/29/2026
4.0.0 84 3/22/2026
3.3.1 130 1/19/2026
3.3.0 125 1/18/2026
3.2.0 207 2/28/2025
3.1.1 163 1/31/2025
3.1.0 149 1/28/2025
3.0.0 219 1/19/2025