Skip to content

Repository files navigation

Bitpoll

Bitpoll is a software to conduct polls about Dates, Times or general Questions.

This is a new version of the Dudel from opatut (https://github.com/opatut/dudel) used on https://bitpoll.de, rewritten using the Django framework as a backend.

Features

  • set if anonymous votes are casted or if the user must provide it's name
  • set if registration is required for voting
  • allow the creation of private event only accessible to thoses invited
  • Poll can be created for full day event or just a few hours. Custom classes can also be defined
  • URL can be set manually or randomly choosen

Demo

https://bitpoll.de

GUI

Poll Creation Panel

Poll Creation Step 1 Poll Creation Step 2 Poll Creation Step 3

Voting View

Voting View

Poll Results

Poll Results

Installation

You can deploy this tool on your server either by manually cloning the repo and setting it up or you can run a docker image.

Using Docker

The docker image is built automatically from the current master branch. You can use the following commands to set up the docker container:

Create a directory for static and config files:

mkdir -p run/{log,static,config}

Get the example settings file and adapt it according to your needs:

wget https://raw.githubusercontent.com/fsinfuhh/Bitpoll/master/bitpoll/settings_local.sample.py -O run/config/settings.py

It is important to change at least the database settings, secret key, and allowed hosts.

Start the docker container:

docker run -a stdout -a stderr --rm --name bitpoll -p 3008:3008 -p 3009:3009 --volume ./run/static:/opt/static --volume ./run/config:/opt/config ghcr.io/fsinfuhh/bitpoll

The container is reachable on port 3009. If you use an external web server, you can use uwsgi traffic on port 3008 and serve the static assets from run/static at /static/.

Manual Install

Get the code:

git clone https://github.com/fsinfuhh/Bitpoll

Install Python and development dependencies with uv:

uv sync --group dev

Copy bitpoll/settings_local.sample.py to bitpoll/settings_local.py and customize the local settings.

Initialise Database:

./manage.py migrate

Run Testserver:

./manage.py runserver

Run the test suite:

uv run pytest

Production

In production Sentry is used for error reporting. django-auth-ldap is used vor login via ldap uwsgi to serve the app

Install Dependencies for Production:

sudo apt install g++ make python3-psycopg2 python3-ldap3 gettext gcc python3-dev libldap2-dev libsasl2-dev

Install Python Dependencies

uv sync --extra production

Configure examples are in settings_local.py

our used uwsgi config can be found at https://github.com/fsinfuhh/mafiasi-rkt/blob/master/bitpoll/uwsgi-bitpoll.ini

For Production systems it is nessesarry to run

./manage.py compilemessages
./manage.py collectstatic

Management of Dependencies

We use uv to manage and lock the dependencies. Runtime dependencies are in pyproject.toml; production-only dependencies are in the production extra and test tooling is in the dev dependency group.

After changing dependencies or for package updates, run:

uv lock --upgrade

Synchronize the local environment with the lockfile using:

uv sync --group dev

For a production environment use uv sync --extra production. The committed uv.lock makes both environments reproducible.

About

A web application for scheduling meetings and general polling.

Topics

Resources

Stars

312 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages