Awesome
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
<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
Variable | Meaning | Example |
---|---|---|
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:
- 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
<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></details>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