Overview
Discover what makes Bitpoll powerful
Bitpoll is a self‑hosted polling platform that focuses on scheduling and general survey use cases. Built on Django, it exposes a REST‑style API for poll creation, voting, and result aggregation while serving a modern single‑page front end that consumes these endpoints. The application is intentionally lightweight, making it suitable for quick deployment in internal tooling or as a drop‑in component of larger event management systems.
Backend
Database
Web Server
Containerization
Overview
Bitpoll is a self‑hosted polling platform that focuses on scheduling and general survey use cases. Built on Django, it exposes a REST‑style API for poll creation, voting, and result aggregation while serving a modern single‑page front end that consumes these endpoints. The application is intentionally lightweight, making it suitable for quick deployment in internal tooling or as a drop‑in component of larger event management systems.
Technical Stack & Architecture
- Backend: Django 3.x with a custom
pollsapp that defines models forPoll,Choice,Vote, and invitation tokens. Authentication is handled via Django’s built‑in auth, with optional LDAP integration (django-auth-ldap) for enterprise environments. - Database: PostgreSQL is the recommended engine, accessed through
psycopg2. The schema is intentionally normalized to support complex poll types (date ranges, time slots, numeric scoring). - Web Server: Production deployments use uWSGI behind a reverse proxy (NGINX or Apache). Static assets are collected with
collectstaticand served from a dedicated/static/path. - Containerization: A Docker image is published to GHCR (
ghcr.io/fsinfuhh/bitpoll). The container expects a volume for static files and a configuration directory; the entrypoint runs uWSGI on port 3008 with an additional health‑check port 3009. - Internationalization: The codebase uses Django’s gettext system; message files are compiled with
compilemessages.
Core Capabilities & APIs
- Poll Types: Date‑and‑time selection, full‑day events, numeric rating, and free‑form questions.
- Visibility & Security: Configurable anonymity, login requirement, invitation tokens, and per‑user vote limits.
- Programmatic Access: A lightweight API (JSON over HTTP) exposes endpoints for creating polls, listing available options, submitting votes, and retrieving aggregated results. The API is documented in the repository’s
docs/directory and follows REST conventions, making it trivial to integrate with front‑end frameworks or third‑party services. - Webhooks: Optional webhook support (via Django signals) allows external systems to react to vote events or poll completion.
Deployment & Infrastructure
- Self‑Hosting: The application can be deployed on any Linux server with Python 3.8+, PostgreSQL, and uWSGI installed. The Docker image abstracts most of the runtime complexity, enabling quick spin‑ups with a single
docker runcommand. - Scalability: Django’s ORM and uWSGI support multiple workers; horizontal scaling can be achieved behind a load balancer. The stateless nature of the API and the use of a shared database make scaling straightforward.
- Observability: Production builds integrate Sentry for error tracking and provide hooks for Prometheus metrics via uWSGI.
Integration & Extensibility
- Plugins: While Bitpoll has no formal plugin system, its modular Django architecture allows developers to fork or extend the
pollsapp. Custom view mixins, middleware, or signals can be added without modifying the core. - Customization: The front end is built with Vue.js and consumes the API; developers can replace or augment this layer by swapping out components or writing new ones that hit the same endpoints.
- OAuth & SSO: LDAP support is already baked in; adding OAuth2 or other identity providers can be achieved by integrating Django‑allauth or similar packages.
Developer Experience
- Documentation: The README provides a clear installation guide, and inline comments in the codebase explain key decisions.
- Community: The project is hosted on GitHub with an active issue tracker; contributors can submit PRs for new poll types or bug fixes.
- Configuration: Settings are split into a sample file (
settings_local.sample.py) that developers copy tosettings_local.py. This encourages environment‑specific overrides (e.g., database URLs, secret keys) without committing secrets.
Use Cases
- Event Planning: Companies can host internal event polls where participants vote on dates and times; the date‑picker UI simplifies scheduling.
- Product Feedback: Teams can gather numeric ratings on feature ideas or conduct quick surveys within a product roadmap.
- Academic Scheduling: Departments can use Bitpoll to find suitable times for meetings or exams, leveraging the invitation‑only mode for restricted access.
Advantages
- Performance: Django’s mature ORM and uWSGI’s efficient request handling make Bitpoll responsive even under moderate load.
- Flexibility: The API-first design allows integration with any front‑end or mobile app.
- Licensing: As an open‑source project under the MIT license, developers can modify and redistribute Bitpoll without licensing constraints.
- Rapid Deployment: The Docker image and concise configuration make it possible to bring the service online in minutes, ideal for prototyping or internal tooling.
Overall, Bitpoll offers a well‑structured, API‑centric solution for date and general polling needs that can be quickly adapted to a wide range of developer scenarios.
Open SourceReady to get started?
Join the community and start self-hosting Bitpoll today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Phorge
Self-hosted development-tools
Enclosed
Send private notes with zero-knowledge encryption
LibreServer
Run your own internet services, locally and freely
Neko
Virtual browser in a container, WebRTC‑powered
Plik
Scalable temporary file transfer with secure, multi‑backend support
WikiDocs
Databaseless markdown flat‑file wiki engine
