| .github | ||
| angular | ||
| assets | ||
| flask | ||
| crowdin.yml | ||
| Dockerfile | ||
| LICENSE | ||
| README.md | ||
Self-host Planning Poker
A hassle-free Planning Poker application to deploy on your NAS.
What is it?
This application is intended as a simplified and self-hostable alternative to Planning Poker Online.
It features:
- Multiple deck types: Fibonacci, modified Fibonacci, T-Shirt sizes, powers of 2 and trust vote (0 to 5)
- Spectator mode
- Responsive layout
- Vote summary
- Translations (English, French, German, Italian and Polish. Contributions welcome!)
It does not have fancy features like issues management, Jira integration or timers.
Screenshots
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
| Variable | Meaning | Example |
|---|---|---|
APP_ROOT (optional) |
Allows you to deploy to another path than /.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:
- a back-end written in Python with Flask, Flask-SocketIO and peewee.
- a front-end written with Angular and Socket.IO.
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
Note: 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:
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"
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

