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, andparticipants. - 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
collectstaticmechanism, 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.ymlin 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
electionsapp. - 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
GroupandPermissionsystem. 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
appsarchitecture 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
Electionmodel and registering a new algorithm class, developers can introduce bespoke voting methods without touching core code. - Documentation & Community: The
DEVELOPMENT.mdand 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
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
Remark42
Privacy‑focused lightweight comment engine
TrailBase
Fast, single‑file Firebase alternative built on Rust
Lidify
Music discovery powered by your Lidarr library
Feedpushr
A lightweight, pluggable feed aggregator and delivery engine
Loomio
Collaborative decision-making for groups and organizations
Thelia
Customizable, French‑made e‑commerce platform for scalable online stores