Overview
Discover what makes Indico powerful
Indico is a **full‑stack, web‑based event management platform** that originated at CERN and is now maintained under an MIT license. At its core, it provides a hierarchical content management system for events—allowing users to create conferences, meetings, workshops, and lectures with nested sub‑events. The application is built in **Python 3** using the **Django** web framework, which gives developers a robust ORM, authentication system, and admin interface out of the box. Front‑end interactions rely on **React** for dynamic components (e.g., drag‑and‑drop timetable editor) and **Bootstrap 4** for responsive styling, while the server side communicates with a PostgreSQL database. This stack affords developers a familiar Python ecosystem coupled with modern JavaScript tooling, enabling rapid extension and integration.
Event hierarchy API
Abstract & paper workflows
Registration forms
Room booking
Overview
Indico is a full‑stack, web‑based event management platform that originated at CERN and is now maintained under an MIT license. At its core, it provides a hierarchical content management system for events—allowing users to create conferences, meetings, workshops, and lectures with nested sub‑events. The application is built in Python 3 using the Django web framework, which gives developers a robust ORM, authentication system, and admin interface out of the box. Front‑end interactions rely on React for dynamic components (e.g., drag‑and‑drop timetable editor) and Bootstrap 4 for responsive styling, while the server side communicates with a PostgreSQL database. This stack affords developers a familiar Python ecosystem coupled with modern JavaScript tooling, enabling rapid extension and integration.
Architecture
Indico’s architecture follows a modular monolith pattern. The core application is split into Django apps that encapsulate distinct concerns: events, rooms, abstracts, registration, and payments. Each app exposes a RESTful API (via Django REST Framework) that can be consumed by external services or custom front‑ends. For real‑time updates (e.g., room booking conflicts), the platform uses Django Channels backed by a Redis message broker. Deployment is container‑first; official Docker images are available, and the project ships with docker-compose configurations for development and production. The database layer is PostgreSQL, leveraging its advanced features such as JSONB columns for flexible form data and full‑text search. Optional extensions (e.g., integration with payment gateways or video‑conferencing tools) are implemented as Python plugins that hook into the event lifecycle via signals and decorators.
Core Capabilities
From a developer standpoint, Indico offers several programmable features:
- Event hierarchy API: Create, update, and delete events with parent/child relationships; retrieve nested structures in a single call.
- Abstract & paper workflows: Expose endpoints for submitting abstracts, assigning reviewers, and recording scores; integrate custom review logic via plugin hooks.
- Registration forms: Dynamically generate form schemas (JSON‑based) and persist responses; use API to pre‑populate fields or auto‑approve registrations.
- Room booking: Query availability, lock time slots atomically via transactional API calls; integrate with external room‑management systems.
- Webhooks & notifications: Subscribe to events (e.g., new registration, abstract accepted) and receive payloads; configure SMTP or Slack integrations.
- Badge & ticket generation: Render PDFs server‑side (using WeasyPrint or ReportLab) and expose download links; allow custom templates via plugin overrides.
Deployment & Infrastructure
Indico is designed for self‑hosting on any Linux server that can run Python and PostgreSQL. The Docker images support horizontal scaling: multiple web workers behind a load balancer, Redis for channel layers, and a shared PostgreSQL cluster. For high‑availability, developers can orchestrate containers with Kubernetes, leveraging Helm charts that expose configurable environment variables (database URLs, secret keys, mail servers). The application also ships with a Celery worker pool for asynchronous tasks (email sending, PDF rendering). Since the codebase is open source and MIT‑licensed, organizations can audit or modify core logic without vendor lock‑in.
Integration & Extensibility
Indico’s plugin system is a key value proposition for developers. Plugins are standard Django apps that register themselves in INSTALLED_APPS and can override templates, add URLs, or hook into signals. The public Python API (classes like Event, Room, Abstract) can be imported directly in plugins or external scripts. Additionally, the REST API follows HATEOAS principles, providing hypermedia links for navigation. Developers can also expose custom GraphQL endpoints by extending the existing schema, thanks to the underlying graphene-django integration. For real‑time use cases, the Channels layer allows WebSocket connections to listen for event updates, enabling live dashboards or notification widgets.
Developer Experience
The project hosts comprehensive documentation on docs.getindico.io, covering installation, plugin development, API usage, and deployment best practices. The community is active on GitHub and a dedicated Slack channel; contributions are welcomed via pull requests, and the maintainers follow semantic versioning. The codebase is well‑structured with type hints (PEP 484) and employs pytest for unit testing, making it straightforward to add new features or fix bugs. Continuous integration runs on GitHub Actions, ensuring that any change passes linting and test suites before merging.
Use Cases
- Academic conferences: Leverage the abstract submission and review workflow, integrate with institutional payment gateways, and auto‑generate badges.
- Corporate training portals: Use the event hierarchy to manage multi‑day workshops, embed video conferencing links, and track attendance via room booking.
- Research labs: Host internal meetings with meeting‑management tools, archive presentation materials, and integrate with CERN’s authentication system.
- Event aggregators: Build a custom front‑end that consumes Indico’s API to display events across multiple venues, while keeping the back‑office in place.
Advantages
Developers favor Indico for its Python/Django foundation, which aligns with many existing stacks, and its plugin architecture that avoids monolithic upgrades. The MIT license allows free commercial use without licensing fees, unlike proprietary conference tools. Performance is tuned for high‑volume scenarios (CERN handles 900
Open SourceReady to get started?
Join the community and start self-hosting Indico 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
Spectrum 2
Cross‑network instant messaging for self‑hosted users
auto-mcs
Instant Minecraft server management for friends
Bigcapital
Smart, open‑source accounting for SMBs
Maza Ad Blocking
Local ad blocker, no extensions needed
WikiDocs
Databaseless markdown flat‑file wiki engine
Thelia
Customizable, French‑made e‑commerce platform for scalable online stores
