Home

Awesome

Self-host Planning Poker

A hassle-free Planning Poker application to deploy on your NAS.

Docker Hub Docker Hub GitHub release

GitHub last commit License Tests Docker build Crowdin

What is it?

This application is intended as a simplified and self-hostable alternative to Planning Poker Online.

It features:

It does not have fancy features like issues management, Jira integration or timers.

Screenshots

<a href="https://github.com/axeleroy/self-host-planning-poker/blob/main/assets/screenshot.png"><img alt="Application screenshot with cards face down" src="https://github.com/axeleroy/self-host-planning-poker/blob/main/assets/screenshot.png" width="412px"></a> <a href="https://github.com/axeleroy/self-host-planning-poker/blob/main/assets/screenshot.png"><img alt="Application screenshot with cards revealed" src="https://github.com/axeleroy/self-host-planning-poker/blob/main/assets/screenshot-revealed.png" width="412px"></a>

Deployment

Deploying the application is easy as it's self-contained in a single container. All you need is to create a volume to persist the games settings (ID, name and deck).

Docker

docker run \
  -v planning-poker-data:/data \
  -p 8000:8000 \
  axeleroy/self-host-planning-poker:latest

docker-compose

version: "3"
services:
  planning-poker:
    image: axeleroy/self-host-planning-poker:latest
    ports:
      - 8000:8000
    volumes:
      - planning-poker-data:/data
volumes:
  planning-poker-data: {}

Environment variables

VariableMeaningExample
APP_ROOT (optional)Allows you to deploy to another path than /.<br>See Configuration examples for deploying on sub‐paths for more details.APP_ROOT=/poker/

Running behind a reverse-proxy

Refer to Socket.IO's documentation for setting up your reverse-proxy to work correctly with Socket.IO.

Customization

See Customizing the application's style and icon.

Getting involved

I'm a developer and I want to help

You are welcome to open Pull Requests resolving issues in the Project or tagged pr-welcome. Don't forget to mention the issue you want to close 😉

I'm a user and I need help / I encountered a bug / I have a feature request

Open an issue and I'll take a look at it.

I'm a user and want to contribute translations

There is a Crowdin project that lets you add translations for your language. If your language is not available, feel free to contact me over Crowdin.

Development

The app consists of two parts:

Back-end development

You must first initialise a virtual environment and install the dependencies

# Run the following commands in the flask/ folder
python3 -m venv env
source env/bin/activate
pip3 install -r requirements.txt

Then launching the development server is as easy as that:

FLASK_DEBUG=1 python app.py

Run unit tests

After initializing the virtual environment, run this command in the flask/ directory:

python -m unittest

Front-end development

<details> <summary> <b>Note:</b> You might want to test the front-end against a back-end. You can either follow the instructions in the previous section to install and run it locally or use the following command to run it in a Docker container: </summary>
docker run --rm -it \
  -v $(pwd)/flask:/app \
  -p 5000:5000 \
  python:3.11-slim \
  bash -c "cd /app; pip install -r requirements.txt; FLASK_DEBUG=1 gunicorn --worker-class eventlet -w 1 app:app --bind 0.0.0.0:5000"
</details>

First make sure that Node.js (preferably LTS) is installed. Then, install dependencies and launch the development server

# Run the following commands in the angular/ folder
npm install
npm start

Building Docker image

# After checking out the project
docker build . -t axeleroy/self-host-planning-poker:custom
# Alternatively, if you don't want to checkout the project
docker build https://github.com/axeleroy/self-host-planning-poker -t axeleroy/self-host-planning-poker:custom