{"id":19099840,"url":"https://github.com/IEvangelist/learning-blazor","last_synced_at":"2025-04-18T17:32:06.255Z","repository":{"id":40415878,"uuid":"378320464","full_name":"IEvangelist/learning-blazor","owner":"IEvangelist","description":"The application for the \"Learning Blazor: Build Single Page Apps with WebAssembly and C#\" O'Reilly Media book by David Pine.","archived":false,"fork":false,"pushed_at":"2024-05-21T13:23:19.000Z","size":7835,"stargazers_count":123,"open_issues_count":0,"forks_count":36,"subscribers_count":11,"default_branch":"main","last_synced_at":"2024-05-29T04:30:30.056Z","etag":null,"topics":["aad-b2c","azure","blazor","component-architecture","cosmosdb","csharp","dotnet","globalization-and-localization","minimal-api","modular","signalr","source-generators","speech-recognition","speech-synthesis","webassembly"],"latest_commit_sha":null,"homepage":"https://bit.ly/learning-blazor","language":"C#","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/IEvangelist.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"IEvangelist","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2021-06-19T04:11:35.000Z","updated_at":"2024-05-19T20:02:31.000Z","dependencies_parsed_at":"2024-10-03T11:03:59.849Z","dependency_job_id":"251ef25a-02a5-43f5-957c-a66ff19b073f","html_url":"https://github.com/IEvangelist/learning-blazor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IEvangelist%2Flearning-blazor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IEvangelist%2Flearning-blazor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IEvangelist%2Flearning-blazor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IEvangelist%2Flearning-blazor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IEvangelist","download_url":"https://codeload.github.com/IEvangelist/learning-blazor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223783108,"owners_count":17201903,"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":["aad-b2c","azure","blazor","component-architecture","cosmosdb","csharp","dotnet","globalization-and-localization","minimal-api","modular","signalr","source-generators","speech-recognition","speech-synthesis","webassembly"],"created_at":"2024-11-09T03:52:19.409Z","updated_at":"2025-04-18T17:32:06.250Z","avatar_url":"https://github.com/IEvangelist.png","language":"C#","readme":"# Learning Blazor: Build Single-Page Apps with WebAssembly and C#\n\n## Amazon Links\n\n| Media type                           | Site                                                   |\n|--------------------------------------|--------------------------------------------------------|\n| [**📖 Paperback (Print)**][paperback] | [**Check it out on Amazon today.**][paperback]         |\n| [**💻 eBook (Kindle)**][kindle]     | [**Also available on Amazon Kindle devices.**][kindle] |\n\n[paperback]: https://www.amazon.com/Learning-Blazor-Build-Single-Page-WebAssembly-dp-1098113241/dp/1098113241\n[kindle]: https://www.amazon.com/dp-B0BGJS7JBP/dp/B0BGJS7JBP\n\n| Book | Details |\n|--|--|\n| \u003ca href=\"https://bit.ly/learning-blazor\" target=\"_blank\"\u003e\u003cimg title=\"Learning Blazor: Build Single-Page Apps with WebAssembly and C#\" alt=\"Learning Blazor: Build Single-Page Apps with WebAssembly and C#\" src=\"images/learning-blazor.png\"\u003e\u003c/a\u003e | This repository is the application detailed in the [\"Learning Blazor: Build Single-Page Apps with WebAssembly and C#\"][learning-blazor] O'Reilly Media book by David Pine. Take advantage of your C# skills to build UI components and client-side experiences with .NET. With this practical guide, you'll learn how to use Blazor WebAssembly to develop next-generation web experiences. Built on top of ASP.NET Core, Blazor represents the future of .NET single-page applications (SPA) investments. |\n\n## This app is deployed to: https://webassemblyof.net\n\nThe app is a Blazor WebAssembly app, deployed to Azure as a Static Web app. It targets .NET 6, and it's packed full of C# 10 features.\n\n| Status | Description |\n|--:|:--|\n| [![build](https://github.com/IEvangelist/learning-blazor/actions/workflows/build-validation.yml/badge.svg)](https://github.com/IEvangelist/learning-blazor/actions/workflows/build-validation.yml) | Wether the current source code builds successfully, and all tests pass. |\n| [![CodeQL](https://github.com/IEvangelist/learning-blazor/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/IEvangelist/learning-blazor/actions/workflows/codeql-analysis.yml) | The current CodeQL security / vulnerability scan result. |\n| [![Azure Translation](https://github.com/IEvangelist/learning-blazor/actions/workflows/machine-translation.yml/badge.svg)](https://github.com/IEvangelist/learning-blazor/actions/workflows/machine-translation.yml) | Wether the last machine-translation run was successful. |\n| [![Deploy Static Web App](https://github.com/IEvangelist/learning-blazor/actions/workflows/deploy-az-static-webapp.yml/badge.svg)](https://github.com/IEvangelist/learning-blazor/actions/workflows/deploy-az-static-webapp.yml) | The status of the last deployment of the Azure Static Web app. |\n| [![Deploy Weather Function](https://github.com/IEvangelist/learning-blazor/actions/workflows/deploy-az-func.yml/badge.svg)](https://github.com/IEvangelist/learning-blazor/actions/workflows/deploy-az-func.yml) | The status of the last deployment of the Azure Functions app. |\n| [![Deploy Web API](https://github.com/IEvangelist/learning-blazor/actions/workflows/deploy-az-webapi.yml/badge.svg)](https://github.com/IEvangelist/learning-blazor/actions/workflows/deploy-az-webapi.yml) | The status of the last deployment of the Azure Web API. |\n| [![Deploy Pwned Web API](https://github.com/IEvangelist/learning-blazor/actions/workflows/deploy-az-pwnedapi.yml/badge.svg)](https://github.com/IEvangelist/learning-blazor/actions/workflows/deploy-az-pwnedapi.yml) | The status of the last deployment of the Azure Pwned Web API. |\n\nWant to run this locally? See, the [\"Get Started\" article](GET_STARTED.md).\n\n## Home screen (dark theme)\n\n![Learning Blazor: Home screen (dark theme)](images/home-screen-dark.png)\n\n## Home screen (light theme)\n\n![Learning Blazor: Home screen (light theme)](images/home-screen-light.png)\n\n## Featuring\n\nThe app is packed with examples of how to do various things with Blazor, including but not limited to:\n\n- Blazor Third-Party Authentication providers:\n  - Google\n  - GitHub\n  - \"Sign up now\"-based identity provider registration (with email verification).\n- Azure Functions \u0026mdash; .NET\n- ASP.NET Core Web API\n- ASP.NET Core SignalR\n- Bulma (CSS)\n- Polly\n- Swagger / OpenAPI\n- OpenWeatherMap API\n- \"Have I Been Pwned\"\n- Client-Browser Native Speech Synthesis and Speech Recognition\n- Reactive Extensions (Rx.NET)\n- Azure Cosmos DB Repository-Pattern .NET SDK\n- Blazor WebAssembly Localization\n- Azure Cognitive Services Translator\n- Blazor Component Virtualization\n- Humanizer\n- Two-way JavaScript Interop (using both `IJSRuntime` and `IJsInProcessRuntime`)\n  - As well as Blazorators, for source generation\n\n## NuGet Packages\n\nI'm using several of my open-source projects within this repository.\n\n| Package | Repository | Purpose |\n|---------|------------|---------|\n| [IEvangelist.Azure.CosmosRepository](https://www.nuget.org/packages/IEvangelist.Azure.CosmosRepository) | [`./azure-cosmos-dotnet-repository`](https://github.com/IEvangelist/azure-cosmos-dotnet-repository) | `IRepository\u003cTItem\u003e` via DI for light-weight access to Azure Cosmos DB. |\n| [Blazor.LocalStorage.WebAssembly](https://www.nuget.org/packages/Blazor.LocalStorage.WebAssembly) | [`./blazorators`](https://github.com/IEvangelist/blazorators) | Source-generated `localStorage` API implementation class library from Blazorators: C# Source Generators for Blazor. |\n| [Blazor.SpeechRecognition.WebAssembly](https://www.nuget.org/packages/Blazor.SpeechRecognition.WebAssembly) | [`./blazorators`](https://github.com/IEvangelist/blazorators) | Hand-written custom library that wraps browser native `speechRecognition` API implementation. |\n| [HaveIBeenPwned.Client](https://www.nuget.org/packages/HaveIBeenPwned.Client) | [`./pwned-client`](https://github.com/IEvangelist/pwned-client) | A .NET HTTP client for the \"have i been pwned\" API service from Troy Hunt.  |\n\n## GitHub Actions\n\nI'm also using my Resource Translator: https://github.com/IEvangelist/resource-translator, which translates _.resx_ resource files.\n\n\u003e [💡 Ideas](https://gist.github.com/IEvangelist/d43abafb64d207bff25e60769e986bbd) for the application to include.\n\n[learning-blazor]: https://bit.ly/learning-blazor\n","funding_links":["https://github.com/sponsors/IEvangelist"],"categories":["dotnet","azure"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIEvangelist%2Flearning-blazor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FIEvangelist%2Flearning-blazor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIEvangelist%2Flearning-blazor/lists"}