Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 18 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@ team—based on the DORA.dev capabilities.
* 🧰 Easy to self-host via Docker
* 🖥️ Built with .NET + Razor

### Facilitator Views
### Facilitator Views

The facilitator can see al available questions, select them, control the flow of the session, reveal answers, and export results.
The facilitator can see al available questions, select them, control the flow of the session, reveal answers, and export
results.

<a href="./docs/images/quickscan-facilitator-1.png"><img src="./docs/images/quickscan-facilitator-1.png" width="800"></a>

Expand Down Expand Up @@ -68,11 +69,11 @@ Prerequisites
docker run -p 8080:8080 jacobduijzer/devops-quickscan:latest
```

| Role | Url | Description |
|-------------|-----------------------------------|----------------------------------------------------------------------------------------------|
| Facilitator | http://localhost:8080/facilitator | Select questions, control the flow, reveal answers, and export results. |
| Dashboard | http://localhost:8080/dashboard | A display for large screens, showing the current question or results with a QR code to join. |
| Participant | http://localhost:8080/ | Where team members answer the questions and see live results. |
| Role | Url | Description |
|-------------|--------------------------------------|----------------------------------------------------------------------------------------------|
| Facilitator | http://localhost:8080/FacilitatorHub | Select questions, control the flow, reveal answers, and export results. |
| Dashboard | http://localhost:8080/Dashboard | A display for large screens, showing the current question or results with a QR code to join. |
| Participant | http://localhost:8080/ | Where team members answer the questions and see live results. |

### Local run

Expand All @@ -83,11 +84,11 @@ Prerequisites

Then open the appropriate URL based on your role:

| Role | Url | Description |
|-------------|-----------------------------------|----------------------------------------------------------------------------------------------|
| Facilitator | http://localhost:5119/facilitator | Select questions, control the flow, reveal answers, and export results. |
| Dashboard | http://localhost:5119/dashboard | A display for large screens, showing the current question or results with a QR code to join. |
| Participant | http://localhost:5119/ | Where team members answer the questions and see live results. |
| Role | Url | Description |
|-------------|--------------------------------------|----------------------------------------------------------------------------------------------|
| Facilitator | http://localhost:5119/FacilitatorHub | Select questions, control the flow, reveal answers, and export results. |
| Dashboard | http://localhost:5119/Dashboard | A display for large screens, showing the current question or results with a QR code to join. |
| Participant | http://localhost:5119/ | Where team members answer the questions and see live results. |

### Local Docker

Expand All @@ -96,11 +97,11 @@ Then open the appropriate URL based on your role:
docker run -p 8080:8080 devops-quickscan
```

| Role | Url | Description |
|-------------|-----------------------------------|----------------------------------------------------------------------------------------------|
| Facilitator | http://localhost:8080/facilitator | Select questions, control the flow, reveal answers, and export results. |
| Dashboard | http://localhost:8080/dashboard | A display for large screens, showing the current question or results with a QR code to join. |
| Participant | http://localhost:8080/ | Where team members answer the questions and see live results. |
| Role | Url | Description |
|-------------|--------------------------------------|----------------------------------------------------------------------------------------------|
| Facilitator | http://localhost:8080/FacilitatorHub | Select questions, control the flow, reveal answers, and export results. |
| Dashboard | http://localhost:8080/Dashboard | A display for large screens, showing the current question or results with a QR code to join. |
| Participant | http://localhost:8080/ | Where team members answer the questions and see live results. |

## Todo / Wishlist

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@page "/facilitator"
@page "/FacilitatorHub"
@using System.Text
@using DevOpsQuickScan.Core
@using DevOpsQuickScan.BlazorApp.Components.Partials
Expand Down Expand Up @@ -30,7 +30,6 @@

<div class="question-block" style="margin-bottom: 1.5rem;">
<div class="btn-group" role="group">
<a href="/dashboard" class="btn btn-primary" target="_blank">Dashboard</a>
<button class="btn btn-secondary" @onclick="DownloadFileFromStream">Download results</button>
<button class="btn btn-danger" @onclick="@(async () => await ResetSession())">Reset session</button>
</div>
Expand Down Expand Up @@ -92,13 +91,9 @@
return fileStream;
}


private async Task ResetSession()
{
Session.Reset();
await InvokeAsync(StateHasChanged);
}



}
41 changes: 34 additions & 7 deletions src/DevOpsQuickScan.BlazorApp/Components/Layout/MainLayout.razor
Original file line number Diff line number Diff line change
@@ -1,14 +1,34 @@
@inherits LayoutComponentBase
@inject NavigationManager NavManager

<div class="page">

<main>
<div class="px-4 d-flex align-items-center justify-content-between" style="background: #fafafa;">
<a href="/"><img src="@Assets["/img/logo.jpg"]" height="50" alt="Logo" class="logo" /></a>
<a href="/about" class="text-decoration-none" style="color: #888;">
<i class="fa-solid fa-circle-info"></i>
</a>
</div>

<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">

<!-- Left items -->
<div class="d-flex">
<NavLink class="nav-link" href="/" Match="NavLinkMatch.All">
<img src="@Assets["/img/logo.jpg"]"
height="50" alt="Logo"
class="logo"/></NavLink>
</div>

<!-- Right items -->
<div class="d-flex ms-auto">
@if (IsOnFacilitatorHub)
{
<a class="nav-link nav-separator" href="/Dashboard" target="_blank">
Participant Dashboard <i class="fa-solid fa-chart-simple"></i>
</a>
}

<NavLink class="nav-link" href="/About">About <i class="fa-solid fa-circle-info"></i></NavLink>
</div>
</div>
</nav>

<article class="content px-4">
@Body
Expand All @@ -20,4 +40,11 @@
An unhandled error has occurred.
<a href="." class="reload">Reload</a>
<span class="dismiss">🗙</span>
</div>
</div>

@code {

private bool IsOnFacilitatorHub =>
NavManager.Uri.Contains("/FacilitatorHub", StringComparison.InvariantCultureIgnoreCase);

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@page "/dashboard"
@page "/Dashboard"
@using DevOpsQuickScan.Core
@using DevOpsQuickScan.BlazorApp.Components.Partials
@inject NavigationManager Navigation
Expand Down
4 changes: 2 additions & 2 deletions src/DevOpsQuickScan.BlazorApp/Properties/launchSettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"launchUrl": "facilitator",
"launchUrl": "FacilitatorHub",
"applicationUrl": "http://localhost:5119",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
Expand All @@ -15,7 +15,7 @@
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"launchUrl": "facilitator",
"launchUrl": "FacilitatorHub",
"applicationUrl": "https://localhost:7176",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
Expand Down
11 changes: 11 additions & 0 deletions src/DevOpsQuickScan.BlazorApp/wwwroot/app.css
Original file line number Diff line number Diff line change
Expand Up @@ -106,4 +106,15 @@ h1:focus {
border-left: 4px solid #0d6efd; /* Bootstrap primary color */
font-weight: 500;
cursor: pointer;
}

.nav-separator::after {
content: "|";
margin-left: 0.5rem; /* space after the item */
margin-right: 0.5rem; /* space after the item */
color: #6c757d; /* optional: muted color */
}

.nav-separator:last-child::after {
content: ""; /* remove pipe for last item */
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"Id": "3f1d61b0-48c5-426c-ad12-cbc2ecf2386d",
"Name": "Team X",
"Created": "2025-09-18T16:47:29.182928+02:00",
"Updated": "2025-09-18T16:47:29.182935+02:00",
"Submissions": []
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.9" />
<PackageReference Include="Refit" Version="8.0.0" />
</ItemGroup>

</Project>