Admin UI
Bundled as embedded resources in the NuGet packages is an admin UI built using React and Blueprint. It uses the API for all data and requests, so anything that's possible to do in the admin UI is possible to do with the API.
It's configured to be used by default when you enable the API but you must also do this in your Program.cs
before calling app.Run();
app.UseNexusAdminUI();
If you deploy Nexus to multiple environments such as dev/test/stage/prod/etc you can add an environment name that is shown in the UI, as well as add an info notice bar with any message you want. Both of these settings are used in the demo environment described below to see it in action.
builder.Services.AddNexus().AddApi(options =>
{
options.EnvironmentName = "Dev";
options.AdminUI.InfoNotice = "This is a <b>note</b> to anyone using the UI";
});
The menu in the Admin UI is generated by which features in Nexus you use. If you use all features then all items are visible. If you want to control the menu you can implement the menu loader to return which menu items you want:
builder.Services.AddNexus().AddApi(options =>
{
options.AdminUI.MenuItemsLoader = httpContext => Task.FromResult(new List<NexusAdminUIMenuItems>
{
NexusAdminUIMenuItems.HealthChecks,
NexusAdminUIMenuItems.Jobs,
NexusAdminUIMenuItems.Queues,
NexusAdminUIMenuItems.Functions,
NexusAdminUIMenuItems.Statistics,
});
});
The menu loader is an async lambda that gets an HTTP request passed in that lets you have different menu items for different users. The order in the returned list is respected.
Demo environment
There's a demo environment that's deployed to a free tier Azure Web App here:
https://commerce-mind-nexus.azurewebsites.net/admin/
You can click on any buttons you like, start any job or do anything with the queues to get a feel for what the system does.
Demo environment
Since the demo environment is using a free tier Azure Web App the scheduler is paused when nobody is using the API or admin UI which means that the jobs won't run exactly according to schedule.
Authentication
See API docs about authentication.