Bitpoll
Conduct polls about dates, times or general questions.
Conduct polls about dates, times or general questions.
# 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



### Voting View

### 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:
```bash
mkdir -p run/{log,static,config}
```
Get the example settings file and adapt it according to your needs:
```bash
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:
```bash
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:
```bash
git clone https://github.com/fsinfuhh/Bitpoll
```
Install Python and development dependencies with uv:
```bash
uv sync --group dev
```
Copy `bitpoll/settings_local.sample.py` to `bitpoll/settings_local.py` and customize the local settings.
Initialise Database:
```bash
./manage.py migrate
```
Run Testserver:
```bash
./manage.py runserver
```
Run the test suite:
```bash
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:
```bash
sudo apt install g++ make python3-psycopg2 python3-ldap3 gettext gcc python3-dev libldap2-dev libsasl2-dev
```
Install Python Dependencies
```bash
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
```bash
./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:
```bash
uv lock --upgrade
```
Synchronize the local environment with the lockfile using:
```bash
uv sync --group dev
```
For a production environment use `uv sync --extra production`. The committed
`uv.lock` makes both environments reproducible.
A free, open-source expert system for guided interviews and document assembly, based on Python, YAML, and Markdown.
Create a simple place for your entire family to use to find gifts that people want, and to avoid double-gifting.
Community-feedback tool for managing incoming feedback and prioritizing a public roadmap (alternative to Canny, UserVoice, Upvoty).