MCPSERV.CLUB
OpenSlides

OpenSlides

Self-Hosted

Digital assembly platform for agendas, motions and elections

Active(92)
569stars
0views
Updated 1 day ago

Overview

Discover what makes OpenSlides powerful

OpenSlides is a fully self‑hosted, web‑based conference and assembly management platform. From a developer’s standpoint it is an opinionated full‑stack solution that orchestrates agenda creation, motion handling, voting, and live projection in a single application. The core idea is to expose all of these features through a well‑structured RESTful API while also providing an interactive front‑end that can be embedded or used as a standalone web app. This duality allows developers to either consume the API directly for custom workflows or integrate OpenSlides’ UI components into existing portals.

Backend

Database

Frontend

Background Processing

Overview

OpenSlides is a fully self‑hosted, web‑based conference and assembly management platform. From a developer’s standpoint it is an opinionated full‑stack solution that orchestrates agenda creation, motion handling, voting, and live projection in a single application. The core idea is to expose all of these features through a well‑structured RESTful API while also providing an interactive front‑end that can be embedded or used as a standalone web app. This duality allows developers to either consume the API directly for custom workflows or integrate OpenSlides’ UI components into existing portals.

Technical Stack & Architecture

  • Backend: Django (Python 3.11+) is the primary framework, leveraging its ORM for data persistence and the Django Rest Framework (DRF) to expose a versioned JSON API. Custom authentication is built on top of Django’s auth system, with optional LDAP/SSO support for large organisations.
  • Database: PostgreSQL is the default relational database, chosen for its robustness and advanced features such as JSONB columns that store flexible motion metadata. The schema is intentionally modular, with separate apps for agenda, motions, elections, and participants.
  • Frontend: A modern Vue 3 SPA (Single‑Page Application) consumes the DRF endpoints. State is managed with Pinia, and UI components are built on top of Vuetify for rapid development. The front‑end is also served statically by Django’s collectstatic mechanism, enabling seamless deployment without a separate Node server.
  • Background Processing: Celery (Redis broker) handles long‑running tasks such as exporting PDFs, sending email notifications, and synchronising voting results. This decouples intensive operations from the request‑response cycle.
  • Containerization: Official Docker images are available for both stable and staging releases. A docker-compose.yml in the repository demonstrates a minimal production stack (PostgreSQL, Redis, Django, Nginx) and is often used as a starting point for Kubernetes deployments.

Core Capabilities & APIs

  • Agenda & Motion Lifecycle: CRUD operations for agenda items, nested sub‑items, and motion templates. The API supports complex workflows (e.g., multiple amendment stages) via state machines exposed as endpoints.
  • Voting & Elections: Real‑time voting engines are implemented using WebSockets (via Django Channels). REST endpoints expose election definitions, results aggregation, and audit logs. Developers can plug in custom voting algorithms (e.g., Borda count) by extending the elections app.
  • Export & Presentation: A dedicated API layer generates PDF, Markdown, and HTML projections. Export jobs are queued in Celery, allowing large assemblies to generate presentations without blocking users.
  • User & Role Management: Fine‑grained permission models (projector, presenter, participant) are implemented with Django’s Group and Permission system. The API includes endpoints for role assignment, LDAP sync, and audit trails.
  • Webhooks & Event Bus: OpenSlides emits webhook events on key actions (motion added, vote cast). External services can subscribe to these via a simple HTTP POST endpoint, enabling integrations with Slack, Mattermost, or custom dashboards.

Deployment & Infrastructure

The application is intentionally lightweight: a single docker-compose stack requires ~500 MiB RAM for the web process and 1 GiB for PostgreSQL in a small meeting. For larger assemblies, horizontal scaling is straightforward—multiple web workers behind Nginx, a Redis cluster for Celery beat, and a replicated PostgreSQL setup. The Docker images are built on Alpine Linux, reducing attack surface and image size (~120 MiB). OpenSlides also provides Helm charts for Kubernetes, making it trivial to roll out new versions or add persistence via PersistentVolumeClaims.

Integration & Extensibility

  • Plugin System: The apps architecture allows developers to create new Django apps that register themselves with OpenSlides. Plugins can add new API endpoints, extend the front‑end via Vue components, or hook into signals (e.g., motion_created). The repository includes a sample plugin that demonstrates this pattern.
  • Custom Themes: The UI is fully themable; developers can override CSS variables and Vue templates to match an organisation’s branding. A CLI command (openslides theme) scaffolds a new theme directory.
  • Extending Voting Algorithms: By subclassing the base Election model and registering a new algorithm class, developers can introduce bespoke voting methods without touching core code.
  • Documentation & Community: The DEVELOPMENT.md and API reference in the docs are comprehensive. A growing community on GitHub, Slack, and a dedicated forum provides rapid support for integration questions.

Use Cases

  • University Student Councils: Automate motion proposals, debate scheduling, and secret ballot elections with a single web portal that can be embedded into the university’s intranet.
  • NGO Governance: Deploy a secure, audit‑ready voting system for board meetings, with PDF export of minutes and live projection to conference rooms.
  • Corporate Assemblies: Integrate with existing LDAP directories, expose a custom front‑end on an internal dashboard, and use the webhook system to trigger Slack notifications when votes are cast.

Advantages for Developers

  • Open Source & MIT Licensed: No licensing fees, complete source visibility, and the freedom to modify core behaviour.
  • Full Stack Consistency: Same language (Python) for backend and API, Vue 3 for the front‑end—reduces context switching.
  • Extensible Architecture: Plugin system, signal hooks,

Open SourceReady to get started?

Join the community and start self-hosting OpenSlides today