MCPSERV.CLUB
Bitpoll

Bitpoll

Self-Hosted

Self‑hosted poll platform for dates, times and general questions

Active(81)
281stars
0views
Updated 24 days ago
Bitpoll screenshot 1
1 / 5

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 polls app that defines models for Poll, 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 collectstatic and 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 run command.
  • 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 polls app. 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 to settings_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

Weekly Views

Loading...
Support Us
Most Popular

Infrastructure Supporter

$5/month

Keep our servers running and help us maintain the best directory for developers

Repository Health

Loading health data...

Information

Category
other
License
GPL-3.0
Stars
281
Technical Specs
Pricing
Open Source
Database
PostgreSQL
Docker
Official
Supported OS
LinuxDocker
Author
fsinfuhh
fsinfuhh
Last Updated
24 days ago