Simple A/B choice game https://ab.21x9.org
Go to file
gpkvt 6810cc315c Added link to demo 2023-07-03 11:53:14 +02:00
static fixed help position 2023-06-08 07:27:32 +02:00
templates added "or" voting option 2023-06-07 22:27:34 +02:00
LICENSE Initial commit 2023-06-02 09:47:04 +02:00
README.md Added link to demo 2023-07-03 11:53:14 +02:00
ab.txt improved question 2023-06-07 18:38:07 +02:00
config.ini added "or" voting option 2023-06-07 22:27:34 +02:00
game.py pylinted 2023-06-06 22:47:34 +02:00
requirements.txt Updated requirements 2023-06-02 22:09:18 +02:00
supervisor.conf Removed logging 2023-06-06 00:33:14 +02:00

README.md

A/B Game

Simple choice game.

Demo

https://ab.21x9.org

Installation

  1. Install python3 (and pip if needed)
  2. Clone the Repo into /opt/ab/
  3. Put A/B questions in ab.txt
  4. Set config variables in config.ini
  5. Install requirements (pip install -r requirements.txt)

Run

Manual

  1. Run chmod +x game.py
  2. Run ./game.py

Or just run python3 ./game.py

As Service

  1. Install supervisord
  2. Copy supervisor.conf to /etc/supervisor/conf.d/abgame.conf
  3. Reload supervisor (supervisorctl reload)

Use

Open your browser and navigate to http://localhost:5000 or whatever you configured as bind and port in your config.ini.

Reverse Proxy

To run this game in an production environment it's strongly recommended to set up an reverse proxy upfront.

nginx

Make sure you understand the config and replace the location and/or proxy_pass value if necessary.

location / {
        proxy_pass http://127.0.0.1:5000/;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        client_max_body_size 32M;
        proxy_redirect off;
        proxy_intercept_errors off;
        proxy_read_timeout 86400s;
        proxy_ignore_client_abort on;
        proxy_connect_timeout 120s;

        proxy_buffer_size 128k;
        proxy_buffers 4 256k;
        proxy_busy_buffers_size 256k;

        proxy_headers_hash_max_size 512;
        proxy_buffering on;
        proxy_cache_bypass $http_pragma $http_authorization $cookie_nocache;
}