The following repo is an online quiz platform. It is written using dotnet with Blazor Webassembly on the front end and SignalR on the backend.
For instructions on how to deploy this to your own environment see the deploy.md file.
The project consists of...
/manage
url (you will be prompted to sign in)./manage
page or the "Save and Present" option in the editor./
)` url.The core web app is written in Blazor Web Assembly. This means the client side interactions are written in C# instead of Javascript. For Charting and Animations I am making use of the Blazorise library.
The interactions between the presenter and clients are made possible using ASP.NET Core SignalR. SignalR takes care of setting up either a websocket connection or a long polling connection between the clients and the hub.
The Infrastructure deployment is done using Bicep files. Bicep is a native technology to Microsoft Azure and generates more readable code than ARM.
The project contains 2 github actions, one to deploy the infrastructure, the other deploys the app.
By default, the project is hosted on a Linux App Service Plan (B1). Thanks to .NET Core I can take advantage of the cheaper compute sku.
The SignalR service handles connections between the clients and the hub and is essential in a potentially autoscaled environment as it provides a backplane for the hubs.
Custom Metrics are logged to Workspace backed Application Insights component. This provides useful diagnostic features.
Quizzes are stored in Azure Blob Storage. This is a cheap effective way of storing json files.