{"id":26718598,"url":"https://github.com/jonathanperis/blazor-mudblazor-starter","last_synced_at":"2026-04-02T21:03:40.199Z","repository":{"id":284656824,"uuid":"955641404","full_name":"jonathanperis/blazor-mudblazor-starter","owner":"jonathanperis","description":"Blazor using Mudblazor starter template. Use as a starter for your project!","archived":false,"fork":false,"pushed_at":"2025-03-27T01:35:13.000Z","size":21,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T02:23:49.121Z","etag":null,"topics":["blazor","csharp","demo","dotnet","material-design","modern-web","mudblazor","open-source","ui-template","webassembly"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonathanperis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-27T00:48:32.000Z","updated_at":"2025-03-27T01:35:16.000Z","dependencies_parsed_at":"2025-03-27T08:31:01.665Z","dependency_job_id":null,"html_url":"https://github.com/jonathanperis/blazor-mudblazor-starter","commit_stats":null,"previous_names":["jonathanperis/blazor-mudblazor-starter"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanperis%2Fblazor-mudblazor-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanperis%2Fblazor-mudblazor-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanperis%2Fblazor-mudblazor-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanperis%2Fblazor-mudblazor-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonathanperis","download_url":"https://codeload.github.com/jonathanperis/blazor-mudblazor-starter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245893130,"owners_count":20689608,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blazor","csharp","demo","dotnet","material-design","modern-web","mudblazor","open-source","ui-template","webassembly"],"created_at":"2025-03-27T17:35:25.730Z","updated_at":"2026-04-02T21:03:40.192Z","avatar_url":"https://github.com/jonathanperis.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# blazor-mudblazor-starter\n\n\u003e Blazor Server starter template with MudBlazor Material Design components -- .NET 9, Docker, and Azure CI/CD ready\n\n[![CI](https://github.com/jonathanperis/blazor-mudblazor-starter/actions/workflows/build-check.yml/badge.svg)](https://github.com/jonathanperis/blazor-mudblazor-starter/actions/workflows/build-check.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n**[Live demo →](https://blazor-mudblazor-starter-hmdqebc9f4eneeep.brazilsouth-01.azurewebsites.net/)**\n\n---\n\n## About\n\nA ready-to-use starter template for building interactive web applications with Blazor Server and MudBlazor. Comes pre-configured with a Material Design layout, navigation, dark mode toggle, and demo pages that demonstrate data binding, data grids, and CRUD dialogs. The project includes a multi-stage Dockerfile for AMD64 and ARM64 architectures, and a CI/CD pipeline that builds, pushes to GitHub Container Registry, and deploys to Azure Web App.\n\n## Tech Stack\n\n| Technology | Version | Purpose |\n|---|---|---|\n| .NET | 9.0 (SDK 9.0.202) | Runtime and SDK |\n| Blazor Server | - | Interactive server-side rendering |\n| MudBlazor | 9.2.0 | Material Design UI components |\n| MudBlazor.Translations | 3.3.0 | Localization support |\n| Docker | Multi-stage | AMD64 + ARM64 container builds |\n| GitHub Actions | - | CI/CD to GHCR + Azure Web App |\n\n## Features\n\n- Pre-configured MudBlazor layout with app bar, navigation drawer, breadcrumbs, and dark mode toggle\n- Demo pages: Home (landing), Counter (interactive counter), Weather (virtualized data grid with Add/Edit/Remove dialogs)\n- Multi-architecture Docker image (AMD64 + ARM64) with health check endpoint\n- Production-optimized builds with AOT compilation, ReadyToRun, and trimming support\n- CI/CD pipeline: PR build checks with container health verification, main branch release to GHCR and Azure Web App\n- Responsive design with breakpoint-aware UI (switch vs toggle for dark mode)\n- Clipboard copy support for data grid rows via right-click context menu\n\n## Getting Started\n\n### Prerequisites\n\n- [.NET 9 SDK](https://dotnet.microsoft.com/download/dotnet/9.0)\n- [Docker](https://www.docker.com/) (optional)\n\n### Quick Start\n\n```bash\ngit clone https://github.com/jonathanperis/blazor-mudblazor-starter.git\ncd blazor-mudblazor-starter\ndotnet restore\ndotnet run --project src/WebClient\n```\n\nOpen `http://localhost:5000` in your browser.\n\n### Run with Docker\n\n```bash\ndocker build -t blazor-mudblazor -f src/WebClient/Dockerfile src/\ndocker run -p 5000:5000 blazor-mudblazor\n```\n\n## Project Structure\n\n```\nblazor-mudblazor-starter/\n├── src/WebClient/\n│   ├── Program.cs                  # App entry point, MudBlazor service registration\n│   ├── WebClient.csproj            # .NET 9, MudBlazor 9.2.0, AOT/Trim build flags\n│   ├── Dockerfile                  # Multi-stage build (AMD64 + ARM64)\n│   ├── appsettings.json            # Base configuration\n│   ├── appsettings.Development.json\n│   ├── Properties/launchSettings.json\n│   ├── wwwroot/                    # Static assets\n│   └── Components/\n│       ├── App.razor               # Root HTML document, MudBlazor CSS/JS imports\n│       ├── Routes.razor            # Router setup with MainLayout default\n│       ├── _Imports.razor          # Global using directives\n│       ├── Layout/\n│       │   ├── MainLayout.razor    # MudBlazor layout shell (app bar, drawer, dark mode)\n│       │   └── Breadcrumb.razor    # Reusable breadcrumb navigation component\n│       ├── Pages/\n│       │   ├── Home.razor          # Landing page\n│       │   ├── Counter.razor       # Interactive counter demo\n│       │   ├── Weather.razor       # Data grid with CRUD operations\n│       │   └── Error.razor         # Error page with request ID\n│       └── Weather/\n│           ├── AddWeather.razor    # Dialog for adding weather entries\n│           ├── EditWeather.razor   # Dialog for editing weather entries\n│           └── RemoveWeather.razor # Delete confirmation dialog\n├── .github/workflows/\n│   ├── build-check.yml             # PR validation: build + Docker + health check\n│   └── main-release.yml            # Release: build + GHCR push + Azure deploy\n├── WebClient.sln\n├── global.json                     # .NET SDK 9.0.202\n└── LICENSE\n```\n\n## CI/CD\n\n**Pull requests** (`build-check.yml`): Restores, builds the .NET project, then builds a Docker image and runs a container health check against `/healthz`.\n\n**Main branch** (`main-release.yml`): Builds with production optimizations (TRIM=true, EXTRA_OPTIMIZE=true), pushes a multi-arch image to `ghcr.io/jonathanperis/blazor-mudblazor-starter:latest`, and deploys to Azure Web App using a publish profile.\n\n## License\n\nMIT -- see [LICENSE](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanperis%2Fblazor-mudblazor-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonathanperis%2Fblazor-mudblazor-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanperis%2Fblazor-mudblazor-starter/lists"}