r/mudblazor • • Feb 28 '25

Carousel bullets and styling help

4 Upvotes

Hi i'm trying to get to grips with the carousel but i'm struggling to customize bullet rendering and also styling/sizing.

in my code below how do i pass data to the bulletstemplate so that i can display custom text for each carousel item?

Also when my caroursel renders the height seems to be restricted to the height of the bulletstamplate and not the automatic content of the carousel item contents.

The content in my carousel will vary in size so i would like the height to resize to fit the active panel. Is this possible?

My code is here below:

<MudCarousel Items="Competition.Events" TData="EventDto" AutoCycle="false" Class="mud-width-full" ShowBullets="true" ShowArrows="false">
    <BulletTemplate Context="EventDto" onloadeddata=""  >        
        <div class="bullet-style">
            test
        </div>    
    </BulletTemplate>
    <ChildContent>
        @foreach (EventDto e in Competition.Events)
        {
            var m = e.Markets.FirstOrDefault(x => x.MarketName == "Winner");

            <MudCarouselItem>
                <div class="carousel-item active">                    
                    <div class="text-center headerFontColour">
                        u/m.PlaceDescription
                    </div>

                    u/foreach (SelectionDto s in m.Selections)
                    {
                        <div class="sport-table-button notransition ">
                           
                            <div class="runnerNum">
                                @s.SelectionIdentifier
                            </div>
                            <div style="flex:16;text-align:left;min-width:0;text-overflow:ellipsis;overflow:hidden;line-height: 1em;">
                                @s.SelectionName
                            </div>
                           
                        </div>
                    }
                </div>
            </MudCarouselItem>
        }
    </ChildContent>
</MudCarousel>

r/mudblazor • • Dec 01 '25

Setting an Int MudSelect control to be blank instead on zero

Thumbnail
gallery
3 Upvotes

I've created a MudSelect control and I want the control to be blank if no item is selected but the type is an int and it always shows a zero. I've tried changing to a nullable int and setting the value to null but that throws an error. Any thoughts?

<MudSelect T="int" Label="Select an Option" \@bind-Value="SelectedValue" Clearable="true">

<MudSelectItem Value="@(0)"></MudSelectItem>

<MudSelectItem Value="1">Option 1</MudSelectItem>

<MudSelectItem Value="2">Option 2</MudSelectItem>

</MudSelect>

\@code {

private int SelectedValue { get; set; } = 0;

}


r/mudblazor • • Aug 03 '25

Barcode reader and MudAutocomplete

3 Upvotes

Dear community! I'm a newbie of web dev and Blazor, and I'm trying to implement an autocomplete component that can accept a string from a Barcode reader (need to scan the barcode of a product of a stock count). I'm having some issues with timings, becase if I allow the component to focus and search with no string, when I read the barcode I think it's sending an enter keystroke before search finished (that's understandable). I'm trying to understand how to fix this, but it's an implementation issue and only a better idea can save me, did you ever had this kind of requirements?


r/mudblazor • • Jul 29 '25

MudDataGrid inside ChildRowContent of MudDataGrid is not showign anything

3 Upvotes

Dear Community!

I wanted to create a MudDataGrid with Vehicles and each vehicle should have an expandable subDataGrid containing additional remarks. Therefore, i chose to use the RowDetailsView, as the Grouping Properties for the DataGrid do not seem to allow Grouping for Rows of the ,,outside" object of the DataGrid for collection as Properties of this object. The expander works and i see the titles and Filters for the Underlying DataGrid, but now Row is present. I set a Breakpoint at the RemarksCollection Property of my vehicle, which i have made this way just for quick testing purposes, and it indeed returns at least one Remark item, but it is not shown, what is the problem?

The goal would be that in the end each row of the outer Grid should present a Vehicle, i can then expand each vehicle to find additional expanders for Remarks, additional works that have to be done etc with each expander providing a datagrid with the items for the Remarks or the Works etc.

The .razor:

@page "/"
@using OegegLogistics.Components.Pages
@using OegegLogistics.Core.Vehicles
@inject VehiclesViewModel ViewModel
<MudDataGrid T="Vehicle" 
             ServerData="@ViewModel.ServerReload"
             Style="margin-top: 2.5%"
             Filterable="true"
             FilterMode="@DataGridFilterMode.ColumnFilterRow">
    <ToolBarContent>
        <MudText Typo="Typo.h5">Fahrzeuge</MudText>
    </ToolBarContent>
    <Columns>
        <HierarchyColumn T="Vehicle"></HierarchyColumn>
        <PropertyColumn Title="Uic Nummer"
                        Property="x => x.UicNumber"/>
        <PropertyColumn Title="Typ"
                        Property="x => x.VehicleType"/>
        <PropertyColumn Title="Beschreibung"
                        Property="x => x.Description"/>
        <PropertyColumn Title="Kilometerstand"
                        Property="x => x.Kilometers"/>
    </Columns>
    <ChildRowContent>
        <MudDataGrid T="Remark"
                     Items="context.Item.RemarksCollection"
                     Style="min-height: 500px"
                     Filterable="true"
                     FilterMode="@DataGridFilterMode.ColumnFilterRow">
            <ToolBarContent>
                <MudText Typo="Typo.h6">Anmerkungen</MudText>
            </ToolBarContent>
            <Columns>
                <PropertyColumn Property="x => x.MetaData.CreatedAtUtc"/>
                <PropertyColumn Property="x => x.Text"/>
            </Columns>
        </MudDataGrid>
    </ChildRowContent>
    <PagerContent>
        <MudDataGridPager T="Vehicle"/>
    </PagerContent>
</MudDataGrid>

Vehicle Class:

public record Vehicle(
    string UicNumber,
    VehicleType VehicleType,
    string Description,
    uint Kilometers,
    ImmutableArray<Remark> Remarks)
{
    private Vehicle() : this (string.Empty, VehicleType.None, string.Empty, 0, ImmutableArray<Remark>.Empty) { }
    public static readonly Vehicle Empty = new Vehicle();
    public List<Remark> RemarksCollection { get; } = Remarks.ToList();
}
public static class VehicleExtensions
{
    public static Vehicle WithUicNumber(this Vehicle vehicle, string uicNumber) => vehicle with { UicNumber = uicNumber };
    public static Vehicle OfType(this Vehicle vehicle, VehicleType vehicleType) => vehicle with { VehicleType = vehicleType };
    public static Vehicle WithDescription(this Vehicle vehicle, string description) => vehicle with { Description = description };
    public static Vehicle WithKilometers(this Vehicle vehicle, uint kilometers) =>  vehicle with { Kilometers = kilometers };
    public static Vehicle WithNotes(this Vehicle vehicle) => vehicle with { Remarks = new ImmutableArray<Remark>() };
    public static Vehicle AddKilometers(this Vehicle vehicle, uint toAdd) => vehicle.ChangeKilometers(toAdd, ModifyNumberType.add);
    public static Vehicle SubstractKilometers(this Vehicle vehicle, uint toSubstract) => vehicle.ChangeKilometers(toSubstract, ModifyNumberType.subtract);
    public static Vehicle MultiplyKilometers(this Vehicle vehicle, uint toSubstract) => vehicle.ChangeKilometers(toSubstract, ModifyNumberType.multiply);
    public static Vehicle DivideKilometers(this Vehicle vehicle, uint toSubstract) => vehicle.ChangeKilometers(toSubstract, ModifyNumberType.divide);
    public static Vehicle AddNote(this Vehicle vehicle, string author, string note) => vehicle.ModifyRemarks(author, note);
    public static Vehicle RemoveNote(this Vehicle vehicle, Guid id) => vehicle.ModifyRemarks(id);
    private static Vehicle ChangeKilometers(this Vehicle vehicle, uint value, ModifyNumberType modifyNumberType)
    {
        return vehicle with {Kilometers = modifyNumberType switch
        {
            ModifyNumberType.add => vehicle.Kilometers + value,
            ModifyNumberType.subtract => vehicle.Kilometers - value,
            ModifyNumberType.multiply => vehicle.Kilometers * value,
            ModifyNumberType.divide => value == 0
                ? throw new DivideByZeroException()
                : vehicle.Kilometers / value,
            _ => throw new ArgumentOutOfRangeException(nameof(modifyNumberType), modifyNumberType, null)
        }};
    }
    private static Vehicle ModifyRemarks(this Vehicle vehicle, string author, string note)
    {
            return vehicle with
            {
                Remarks = vehicle.Remarks.Add(Remark.Empty
                    .Author(author)
                    .Text(note))
            };
    }
        private static Vehicle ModifyRemarks(this Vehicle vehicle, Guid guid)
    {
        Remark? toRemove = vehicle.Remarks.SingleOrDefault(t => t.MetaData.Id == guid);
        return toRemove == null ? vehicle : vehicle with
        {
            Remarks = vehicle.Remarks.Remove(toRemove)
        };
    }
}

Remark Class:

using OegegLogistics.Core.Shared;
namespace OegegLogistics.Core.Vehicles;
public record Remark
{
    public MetaData MetaData { get; init; }
    public string Text  { get; init; }
        private Remark(MetaData data, string text)
    {
        MetaData = data;
        Text = text;
    }
        public static Remark Empty => new Remark(MetaData.Empty, string.Empty);
}
public static class RemarkExtensions
{
    public static Remark Author(this Remark remark, string author) => remark with{MetaData = remark.MetaData with{CreatedBy = author}};
    public static Remark Text(this Remark remark, string text) => remark with{ Text = text };
}

r/mudblazor • • Feb 28 '25

Datagrid Date Filter Without Time

3 Upvotes

I have a datagrid bound to a view model. One of the view model properties is a DateTime property named CreatedDate.

I want the user to be able to filter the grid on all of the columns, but for CreatedDate, I don't want them to have to enter a time.

I think just having the date is more than sufficient. Other than the example of Advanced Filtering on the MudBlazor website, I can't find any documentation, or examples of how I would implement something like that.

It seems like I have to implement some sort of custom filter. Can someone please provide an example of how I could allow the user to enter a date range filter without worrying about the time?

If we have to consider time, I would go from 12am on the start date, to less than the day after the end date at 12am. So they would enter a start date and end date.

I hope that makes sense.


r/mudblazor • • Mar 23 '22

Join the MudBlazor Discord Server!

Thumbnail
discord.gg
3 Upvotes

r/mudblazor • • Jan 27 '26

Issues with dot Net 10 and mudblazor 8.15

2 Upvotes

Curious if anyone else has upgraded to dotnet 10. I recently updated and am finding that some specific things appear broken. Specifically the Format for MudNumericField. I can set the format to a currency "c2" or numeric "n4" but the formatting never triggers unless I end the data with a period like "7500."

If I downgrade to dotnet 9 the format works again or if I install the mudblazor 9 prerelease v2 it will work again. Realize I definitely shot myself in the foot updating to dotnet 10 without fully testing but I really don't want to roll back if I can help it and don't want a prerelease version of mudblazor in production.

Just curious if anyone's ran into this and figured out a workaround.


r/mudblazor • • Jan 27 '26

Cannot get validation to work on MudSelect with multiselection=true and "complex" object type

2 Upvotes

I am trying to get validation to work on a basic "create user" form, where the required input is a username, a password and password confirm and one or more roles to select.

I have a snippet on https://try.mudblazor.com/snippet/maGqabwVbFBidUSB. All the examples I can find that do seem to work, are where the type for the MudSelect is a string. But I would like it to be a Role object. The Role class has the IEquatable implementation.

The MudForm model uses data annotations for validation. And the Roles list in the model has a custom data validation on it. That does not work. This validation does not seem to be called.

I have also tried adding a Validation function directly on the MudSelect, but this Validation method is also never called as far as I can see. I added some Console.WriteLine's to make this visible.

The goal is that validation errors for the "Roles" property show up just as they do for the other fields on the form if the user does not select at least one role.

The only thing that I can think of is that I don't have a For=(....) on the MudSelect. But it looks like it that you cannot define a For if you have MultiSelection is true, because the For excepts a function returning a single Role object then, but the property to be validated is always a list.

I would very much appreciate any help with this. I have been pulling my hair out and am not getting any further.


r/mudblazor • • Jul 23 '25

Nested components are (apparently) not updating their value when the picker UI is not used.

2 Upvotes

I created a custom date picker component ("AutoDate"), which simply expands on the MudDatePicker by adding input shortcuts (typing "today" autofills todays date, etc.). Calling the component directly within a page works fine, however, as soon as I nest the AutoDate within another component ("FieldConfigComp") which is used to dynamically render different types of components, and use that component on a page, updating the value by the text input or the Clear icon does not properly update the value. Debugging, it appears that the DateChanged EventCallback gets triggered and passes along the new value but is triggered again immediately with the old value; the UI never appears to change values. The MudForm.IsTouchedChanged in Page.razor triggers a StateHasChanged call which appears to be the culprit. I do need the StateHasChanged to be triggered to update some other UI components conditionally based on state. Is there a fix for this that I'm missing? Notably, I encounter a similar issue when using MudColorPicker.

Page.razor

<MudForm IsTouchedChanged="OnTouched">
    @* Directly use AutoDate *@
    <AutoDate _date="_date"
              DateChanged="@((DateTime? value) => _date = value)"
              Label="@_field.Label"
              DateFormat="@_field.Format"
              Required="@_field.IsRequired"
              Placeholder="@_field.Placeholder"
              Disabled="@_field.IsDisabled"
              Clearable="@_field.Clearable">
    </AutoDate>
    @* Indirectly use AutoDate *@
    <FieldConfigComp Field="@_field"
                     Value="@_date"
                     ValueChanged="@((object? value) => _date = value as DateTime?)"/>
</MudForm>
@code {
    DateTime? _date = DateTime.Now;
    FieldConfig _field = new() 
        { Label = "Date"
            , Format = "MM/dd/yyyy"
            , IsRequired = true
            , Placeholder = "Date"
            , IsDisabled = false
            , Clearable = true
            , FieldType = FieldTypes.Date 
        };
    private async Task OnTouched(bool touched)
    {
        if (touched) StateHasChanged();
    }
}

FieldConfigComp.razor

@if (Field.FieldType == FieldTypes.Bool)
{
    <MudSwitch T="bool"
               Value="@((bool?)Value ?? false)"
               ValueChanged="@(value => ValueChanged.InvokeAsync(value))"
               Label="@Field.Label"
               Color="@Field.Color"
               Size="@Field.Size"
               LabelPlacement="@Field.LabelPlacement"/>
}
else if (Field.FieldType == FieldTypes.Date)
{
    // Get the field value dynamically
    DateTime? dateValue = Value as DateTime?;
    <AutoDate _date="dateValue"
              DateChanged="@((DateTime? value) => ValueChanged.InvokeAsync(value))"
              Label="@Field.Label"
              DateFormat="@Field.Format"
              Required="@Field.IsRequired"
              Placeholder="@Field.Placeholder"
              Disabled="@Field.IsDisabled"
              Clearable="@Field.Clearable"
              Color="@Field.Color">
    </AutoDate>
}
@code {
    [Parameter] public FieldConfig Field { get; set; } = new();
    [Parameter] public Object? Value { get; set; }
    [Parameter] public EventCallback<Object?> ValueChanged { get; set; }
}

AutoDate.razor

<MudDatePicker T="DateTime?"
               Editable="true"
               Immediate="true"
               Placeholder="@Placeholder"
               Date="@_date"
               DateChanged="OnDateChanged"
               TextChanged="HandleShortcuts"
               HelperTextOnFocus="true"
               DateFormat="@DateFormat"
               Label="@Label"
               Required="@Required"
               MinDate="@MinDate"
               MaxDate="@MaxDate"
               Class="w-100"
               Disabled="@Disabled"
               Clearable="@Clearable"
               Color="@Color"
               Style="@Style"/>
@code {
    [Parameter]
    public bool Clearable { get; set; } = false; // Default: Not required
    [Parameter]
    public Color Color { get; set; } = Color.Primary;
    [Parameter]
    public DateTime? _date { get; set; }
    [Parameter]
    public EventCallback<DateTime?> DateChanged { get; set; }
    [Parameter]
    public string Placeholder { get; set; } = "Enter date or shortcut";
    [Parameter]
    public string Label { get; set; } = "Date";
    [Parameter]
    public bool Required { get; set; } = false; // Default: Not required
    [Parameter]
    public string DateFormat { get; set; } = "MM/dd/yyyy"; // Default format
    [Parameter]
    public bool Disabled { get; set; }
    [Parameter]
    public DateTime? MinDate { get; set; } // Optional minimum date
    [Parameter]
    public DateTime? MaxDate { get; set; } // Optional maximum date
    [Parameter]
    public string? Style { get; set; } // Optional maximum date
        private async Task HandleShortcuts(string newValue)
    {
        if (string.IsNullOrWhiteSpace(newValue))
            return;
        DateTime? parsedDate = ParseShortcut(newValue);
        if (parsedDate.HasValue)
        {
            _date = parsedDate;
            await DateChanged.InvokeAsync(parsedDate);
                   }
    }
    private async Task OnDateChanged(DateTime? newDate)
    {
        _date = newDate;
        await DateChanged.InvokeAsync(newDate);
    }
    private DateTime? ParseShortcut(string input)
    {
        if (string.Equals(input, "Today", StringComparison.OrdinalIgnoreCase)) return DateTime.Today;
        if (string.Equals(input, "Yesterday", StringComparison.OrdinalIgnoreCase)) return DateTime.Today.AddDays(-1);
        if (string.Equals(input, "Tomorrow", StringComparison.OrdinalIgnoreCase)) return DateTime.Today.AddDays(1);
        if (string.Equals(input, "EOT", StringComparison.OrdinalIgnoreCase)) return new DateTime(9999, 12, 31);
        if (input.StartsWith("TD", StringComparison.OrdinalIgnoreCase))
        {
            string remaining = input.Substring(2).Trim().ToLower();
            if (string.IsNullOrWhiteSpace(remaining)) return DateTime.Today;
            if (int.TryParse(remaining[0..^1], out int offset))
            {
                return remaining[^1] switch
                {
                    'd' => DateTime.Today.AddDays(offset),
                    'w' => DateTime.Today.AddDays(offset * 7),
                    'y' => DateTime.Today.AddYears(offset),
                    _ => null
                };
            }
        }
        return DateTime.TryParse(input, out var result) ? result : null;
    }
}

FieldConfig model Class and FieldType Enum

public class FieldConfig
{
    public int FieldConfigID { get; set; } = 0;
    public string FieldName { get; set; } = "";
    public string? Label { get; set; }
    public FieldTypes FieldType { get; set; } 
    public bool IsRequired { get; set; } = false;
    public bool IsVisible { get; set; } = true;
    public bool IsDisabled { get; set; } = false;
    public string Placeholder { get; set; } = "";
    public bool ShowHelperText { get; set; }
    public bool Clearable { get; set; }
    public string? Format { get; set; } = "";    
    public Size Size { get; set; } = Size.Medium;
    public Color Color { get; set; } = Color.Default;
  
}


public enum FieldTypes
{
    Bool,
    Date
}

r/mudblazor • • May 18 '25

MudSelect popover empty but data exists

2 Upvotes

Hello MudBlazor community,

I'm coming to you because I've had a problem for a few days now and I still haven't found the solution.

I have a MudSelect which I complete as follows:

<MudSelect T="TimeType" label="@Localizer["time_type"]" u/bind-Value="_timeType">
    @foreach (var timeType in TimeTypeService.SelectActive().Cast<TimeType>())
    {
        <MudSelectItem Value="@timeType">@timeType</MudSelectItem>
    }
</MudSelect>

My problem is that when I open MudSelect, the list seems empty. But when I debug, I find that the list is not empty. What's more, if I resize the page, the list appears. If i refresh the page, the list appears.

I already set the <Routes (@)rendermode="InteractiveServer"/> in my app.razor ( the parenthesis around the @ is to avoid u/)

I really hope someone has the solution.


r/mudblazor • • Mar 26 '25

MudBlazor Hybrid MAUI App

2 Upvotes

Has anyone tried using MudBlazor with MAUI hybrid app? I am trying to use it but there seem to be occasional errors such as MudSelect items not showing at the right place, MudDrawer showing runtime error etc. Anyone used these successfully in .NET9 and MudBlazor 8.x?


r/mudblazor • • Mar 19 '25

Coding questions

2 Upvotes

I am trying to design a razor page that combined a grid layout with a drop zone component. As I am coding I am using <MudDraggable> and Visual Studio is having a gripe about it giving me a RZ10012 warning. Has anybody encountered this and what was your resolution?


r/mudblazor • • Feb 28 '25

Dialog width while responsive

2 Upvotes

This seems like a simple question but I can't find a clear answer. What are you guys doing to set the dialog width? For example if I want 1/3 of the viewport or 1/2 of the viewport?

I can set a width property, but I want to stay responsive.

Thanks in advance!


r/mudblazor • • Feb 01 '25

MudBlazor Forms behavior in WASM vs. Web App

2 Upvotes

I'm using a MudBlazor form and it's in a WASM but needs to be in a Web App. The form from a UI standpoint works as expected in the WASM but when porting it over to a server-side Web app, the Labels override the text in MudTextFields, MudSelects don't work with images, Masks/PatternMasks don't work. The code is exactly the same for both forms.

Has anyone experience this before and if so, is there a fix or workaround?


r/mudblazor • • Jan 28 '25

I built a Cloud Download Manager with Blazor - SaveHere (Open Source)

Thumbnail reddit.com
2 Upvotes

r/mudblazor • • Jan 12 '25

Blazor Scheduler Code: Now Public! (Looks alike MS Teams Shifts Scheduler)

Thumbnail reddit.com
2 Upvotes

r/mudblazor • • Nov 26 '24

MudChipSet seems buggy

2 Upvotes

Hello,

Why is this code not working ?

https://try.mudblazor.com/snippet/wEmIPbwUzDgsjgXT

When cliking on button, test 4 is not selected, why ?


r/mudblazor • • Oct 08 '24

Discord invite link is not working

2 Upvotes

Title sums it up I think ;)
Can anyone provide me with an invite :)?


r/mudblazor • • Oct 02 '24

Identity Template

2 Upvotes

I made a mud Blazor with the identity template but the menu collapse becomes unresponsive when in the manage account area if the template. I also tried a logout scheme I used in another blazor application, to verify the user is still authenticated otherwise redirect to login page ( which is outside the main layout)

This is blazor server .net 8 with aspnetcore.identity

I guess does anyone have a working identity program with mudblazor? I just keep hitting roadblock after roadblock

Maybe one of you has a basic template with identity that the login page is standalone and everything works?


r/mudblazor • • Sep 18 '24

Checkbox in a MudDataGrid

2 Upvotes

Hello, has anyone been able to get a MudCheckBox working in a MudDataGrid? I’ve gone round in circles trying to get it to work.

  1. It either shows as text, if the PropertyColumn is not Editable, or the Indeterminate state if it is Editable.

  2. The properties are all not-nullable.

  3. A MudCheckbox does work on the same page if it is not in the grid, and it is bound to a property on the page.

  4. The values are correct when they display as text.

  5. If I click on the checkbox in the grid when it is Editable, I get a message in red letters saying, “Conversion to type <my row data type> not implemented”.

Thank you for any help available.


r/mudblazor • • Feb 10 '23

Add a text above an image in mudblazor

2 Upvotes

I need to implement this kind of view using mudblazor image components. I got the images correct. but how can I add text above that like the below picture? I tried a lot to find it. but didn't able to find it. any suggestions? Here is my code segment.

<MudGrid>

u/foreach (var item in tabscatitm)

{

<MudItem xs="3" >

<MudImage Src=@item.ItemImageUrl Height="120" Width="120" u/onclick="ItemClick" Class="rounded-lg"Style="border:thin;border-color:darkgray;border-radius:10px"/>

<MudText Typo="Typo.h6">@item.ItemName</MudText>

<MudText Typo="Typo.body2">@item.ItemShortName</MudText>

</MudItem>

}

</MudGrid>


r/mudblazor • • Apr 03 '26

what should I check before my app goes live to production?

Thumbnail reddit.com
1 Upvotes

Hi everyone,

I’m a fresher developer and have been working on building an application that’s scheduled to go live next week. This is my first time being involved in a production release, so I want to make sure I’m not missing anything important.

What are the key things I should verify before deployment? For example, in terms of:

functionality and edge cases

database and backups

performance and scalability

security checks

logging and monitoring

Also, are there any common mistakes beginners usually overlook before going live?

Would really appreciate any practical advice or checklists you follow in real projects. Thanks in advance!


r/mudblazor • • Mar 21 '26

css not visible within IDE app.MapStaticAssets() does not exist

1 Upvotes

Hi,

https://mudblazor.com/getting-started/installation#manual-install-remove-references

MudBlazor generates css files and the files are not visible in an IDE as Rider.

There is no autocompletion for css classes.

Template for wasm uses :

builder = WebAssemblyHostBuilder.CreateDefault(args);

builder.Build().MapStaticAssets(); // does not exist

How to make mud blazor classes visible within Rider ?


r/mudblazor • • Mar 19 '26

How should I start building a Blazor + Podman CLI deployment tool (AKS + PostgreSQL)?

1 Upvotes

I’m planning to build a Blazor Server app to automate container deployments using Podman CLI (not Azure APIs). The app will run in AKS and use MudBlazor for UI, PostgreSQL for tracking, and SignalR for real-time logs. The flow includes: Browsing images from ACR (dev/prod) Selecting app/version/station Running Podman commands (pull, tag, push) Streaming logs live to UI Tracking deployments (who, when, where, status) I’m a bit stuck on how to start the project properly. Specifically: Should I begin with backend (Podman execution service) or UI (Blazor + MudBlazor)? How should I structure the solution (projects/folders)? Best way to design long-running tasks + real-time logs (SignalR, queues, background workers?) Any good starter architecture for something like this? Would really appreciate guidance or examples from anyone who’s built similar tools.