Home

Awesome

Planning Poker 4 Azure

Live @ http://planningpoker.duracellko.net/

Overview

Planning Poker web application allows distributed teams to play planning poker using just their web browser and is optimized for mobile. The application does not require any registration at all. Scrum Master simply creates a team and all other members connect to the team. Observer role is supported too. The observer can watch the game, but cannot estimate. This is ideal role for a product owner.

How to play Planning Poker

This guide assumes that you already know what planning poker is about and how to play with real cards. If you need any information about planning poker see the wikipedia page. To play planning poker using this application is very simple. For distributed team a conference call is required as this is not provided by the application.

  1. At first Scrum Master creates new team by entering Team name and Scrum master name.
  2. Then all team members join the team by entering the same Team name and unique member name.
  3. Optionally product owner can join the team by entering the same Team name, unique member name and checking Observer checkbox.
  4. When all participants joined the team, the team can discuss first story.
  5. After discussion Scrum Master starts the estimation.
  6. Then all members pick estimates. Optionally Scrum Master can cancel estimation when any of the members requests that.
  7. After all members picked an estimate, the estimates are shown to all participants.
  8. If concensus is found then team can discuss another story and Scrum Master can start estimation again. Otherwise team discusses their estimates and then Scrum Master starts estimation again.

Planning Poker screenshot

Installation

Requirements:

Run: dotnet Duracellko.PlanningPoker.Web.dll

Docker

It is also possible to install the application using Docker image from duracellko/planningpoker repository.

docker pull duracellko/planningpoker
docker run -p 80:8080 duracellko/planningpoker

Architecture

Application is implemented using ASP.NET Core 8.0. Front-end is Single-Page Application implemented using Blazor. This technology allows deployment to different environments:

The application does not have any dependencies to run in basic mode. However, there are configurable advanced features.

Blazor models

Blazor supports multiple rendering modes including Client-side and Server-side. It is possible to simply switch between the modes by configuring UseServerSide setting.

Teams storage

By default, when server application is restarted, all teams are lost. It is possible to specify folder to store teams data between application restarts. Team data are stored in JSON format.

Azure Service Bus

The application is state-full (it stores all teams data in memory). Therefore, it is not simple to deploy the application to a web-farm. Each server in web-farm would have different state of team. However, it is possible to setup Azure Service Bus to synchronize state between nodes in web-farm.

Configuration

The application can be configured using default ASP.NET Core configuration sources:

The application has following configuration settings:

{
    "PlanningPokerClient": {
        "UseServerSide": "Never" // string - Never | Always | Mobile
    },
    "PlanningPoker": {
        "RepositoryFolder": "", // string
        "RepositoryTeamExpiration": 1200, // integer - time in seconds
        "ClientInactivityTimeout": 900, // integer - time in seconds
        "ClientInactivityCheckInterval": 60, // integer - time in seconds
        "WaitForMessageTimeout": 60, // integer - time in seconds

        // Azure Service Bus configuration
        "ServiceBusConnectionString": "", // string
        "ServiceBusTopic": "PlanningPoker", // string
        "InitializationTimeout": 60, // integer - time in seconds
        "InitializationMessageTimeout": 5, // integer - time in seconds
        "SubscriptionMaintenanceInterval": 300, //integer - time in seconds
        "SubscriptionInactivityTimeout": 300 // integer - time in seconds
    }
}

Buid and test

Requirements:

To run build and tests simply execute PowerShell script BuildAndRun.ps1.

.\BuildAndRun.ps1

Optionally it is possible to include execution of end-2-end tests using Selenium.

.\BuildAndRun.ps1 -E2ETest:$true

Run in Visual Studio

PlanningPokerCore.sln solution can be normally open, built and debugged in Visual Studio 2022. Also unit tests can be executed.

For end-2-end tests (Duracellko.PlanningPoker.E2ETest) Playwright dependencies (browser) need to be installed. Simply execute following commands:

.\Build\bin\Debug\net8.0\playwright.ps1 install chromium

Solution projects

PlanningPoker solution contains following projects:

Attributions

This application including source code can be used under MIT License.