Poker planning app in node.
Docker Hub | GitHub Packages (ghcr.io)
The easiest way to self-host pokipoki is via ONCE CLI.
When prompted for a Docker image, enter:
ghcr.io/mattische/mattische-repos/pokipoki:latest
The app serves HTTP on port 80 and exposes a /up health check endpoint as required by ONCE.
only if you wish to run the app locally
npm install# http://localhost:<port setting in .env>
# first user is host - invite users by sending session id to them
npm startCreate your own Caddyfile - this repo contains an example.
Make sure to add correct values in .env such as domain (your servers ip or your domain).
Review docker-compose.yml - especially if you change ports.
Create a JWT_SECRET with for example openssl;
openssl rand -base64 32and copy that to the JWT_SECRET in .env
Probably the easiest way to get up and running is to use docker compose.
It runs 2 containers; poker planning app and a caddy server.
The caddy server uses reverse proxy and routes exposed port 80 to app port (default 3000 in production).
Review settings in docker-compose.yml.
# uses settings such as port as specified in .env
docker compose up# this creates a docker image from the current directory and tag it as pokipoki
# it shows up in docker images list as pokipoki in docker desktop
docker build -t pokipoki .
# Run and auto-remove container when stopped, exposing port 3000 on local network
docker run --rm -p 3000:3000 pokipoki- run poker planning sessions with team, in browser
- 3 themes
- timer
- chat
- first participant will be host and a session id is created; share id with others to invite them
server.js- express server with socket.iosrc/auth.js- JWT authsrc/sessionManager.js- sessionssrc/socketHandler.js- event handling for socket
public/index.html- htmlpublic/*.css- style sheet with themespublic/js/client.js- client jspublic/js/socket.js- socket logicpublic/js/ui.js- ui scriptspublic/js/themeManager.js- theme management
PORT- server port (default: 80 in production)NODE_ENV- environment (development/production)JWT_SECRET- secret key for JWT (use your own)
Generete JWT token with.
openssl rand base64 32# dev mode with watch
npm run dev
# dev with Docker
docker-compose --profile dev up