Docs > Admin Panel >

Dashboard Customization

Cofoundry currently supports only basic customization of the admin panel dashboard, allowing you to replace the content with custom html. We intend to develop more advanced features in a future release, so if you want to contribute suggestions please check out Issue #150.

Replacing the default content

To replace the default dashboard content simply add an html file to the following path in your project: /Cofoundry/Admin/Dashboard/Dashboard.html.

This html file replaces the content area of the dashboard, so for example you could replace the default content with an introduction and some quick links:

Dashboard.html

<p>
    Welcome to the admin panel for our site.
    Here's some links to get you started:
</p>
<ul>
    <li><a href="/admin/pages#/new">Add a page</a></li>
    <li><a href="/admin/images#/new">Add an image</a></li>
    <li><a href="/admin/products">View products</a></li>
</ul>

IDashboardContentProvider

For complete control over the html content that gets added you can override the default IDashboardContentProvider implementation using hte DI system.

using Cofoundry.Domain;
using Microsoft.AspNetCore.Html;
using System.Threading.Tasks;

public class ExampleDashboardContentProvider : IDashboardContentProvider
{
    private readonly IContentRepository _contentRepository;
        
    public ExampleDashboardContentProvider(
        IContentRepository contentRepository
        )
    {
        _contentRepository = contentRepository;
    }

    public async Task<IHtmlContent> GetAsync()
    {        
        var user = await _contentRepository
            .Users()
            .Current()
            .Get()
            .AsDetails()
            .ExecuteAsync();
        EntityNotFoundException.ThrowIfNull(user, "current");

        // Just some examples of changing the content depending on user properties
        // You could also load in an external file using IResourceLocator, which is
        // what the default provider does.
        if (user.Role.IsSuperAdminRole)
        {
            return new HtmlString("<h2>Hello Super Admin!</h2>"); 
        }

        return new HtmlString($"<h2>Hello { user.Username }!</h2>"); 
    }
}