indico

repository·master·Indexed 24 days ago

https://github.com/indico/indico

An open-source, web-based event management tool developed at CERN for organizing conferences and meetings. It features hierarchical content management, registration and payment integration, a plugin system, and a SCSS-based design system. The project includes a local API proxy CLI (apiProxy.py) and utilizes SQLAlchemy and Alembic for database management.

Tokens
53.6K
Snippets
102
Records
254
Agent score
83%

What's inside indico

  1. Overview of Indico production installation guides

    master

    Indico provides official installation guides for single-machine production setups on Alma/Rocky Linux and Debian/Ubuntu systems.

    In these recommended single-machine configurations, the following components run on the same host:

    • Indico (the core application)
    • Celery (task queue)
    • Redis (message broker/cache)
    • PostgreSQL (database)

    While other Linux distributions are not officially supported, they are expected to work, though you may need to adjust package names and installation steps. The single-machine architecture can be adapted for multi-machine deployments if necessary.

  2. Overview of Indico features

    master

    Indico is a web-based, open-source event management tool made at CERN. It is designed to be extensible through a plugin system.

    Key capabilities include:

    • Hierarchical Content Management: A flexible system for managing event content.
    • Conference Organization: Includes modules for Call for Abstracts, abstract reviewing, paper reviewing, and drag-and-drop timetable management.
    • Registration & Payments: Flexible registration form creation and integration with existing payment systems.
    • Participant Tools: A badge editor for printing badges and tickets.
    • Meeting & Room Management: Tools for meeting management, archival of materials, and a room booking interface.
    • Video Conferencing: Integration with existing video conferencing solutions.
  3. Choose a search service for Indico

    master

    Indico uses a backend-agnostic search module that can be powered by different providers. Depending on your performance and feature requirements, you can choose from the following options:

    • Default SQL-based search: Uses SQL storage by default. This is the built-in option.
    • Citadel (ElasticSearch-based): A performant and feature-rich search service. It can be integrated into Indico using the official indico-plugin-citadel plugin.
    • Custom External Search Service: You can support any external service by implementing a plugin that adheres to Indico's search module plugin interface specification.
  4. Use the Indico Event module API

    master

    The indico.modules.events module provides the core functionality for managing events within Indico. The module is organized into several sub-components:

    • Models: Data structures for events, persons, principals, references, reviews, series, settings, and static list links.
    • Operations: Business logic and actions performed on events.
    • Utilities: Helper functions for event-related tasks.
    • Settings: Configuration parameters specific to the event module.
  5. Extend Indico using plugins

    master
    Indico is extensible through plugins, which are standalone packages of code that allow you to add functionality without modifying the Indico core. Plugins can range from simple additions, such as new commands for the Indico CLI, to complex integrations like new payment methods or chat services.
  6. Navigate Indico documentation

    master

    Indico's documentation is organized into several key areas depending on your goal:

    • Installation: Guides for setting up Indico.
    • Configuration: Instructions for configuring the Indico instance.
    • Building: Information on building the project.
    • Search: Documentation regarding search engine integration.
    • Plugins: Guides for developing and using Indico plugins.
    • HTTP API: Reference for interacting with Indico via HTTP.
    • Translating Indico: Information on contributing translations.
    • API Reference: Detailed technical documentation of the internal API.
  7. How to use CUSTOMIZATION_DEBUG to locate templates

    master

    Setting CUSTOMIZATION_DEBUG = True enables detailed logging for customizable templates. The first time a template is accessed, the log will provide:

    1. The relative path where you should place your customized version inside <CUSTOMIZATION_DIR>/templates/.
    2. The full path of the original template.
    3. A "reference" path that can be used to reference the original template from your customized one using Jinja inheritance.
  8. Use Aggregations and Filters with external search services

    master

    When using an external search service (like Citadel), Indico supports advanced features like Aggregations and Filters to enhance search results.

    Aggregations

    Aggregations allow you to group information based on metrics such as field values, sums, or averages. Indico supports bucket or metric groups composed of a key, count, and filter key. These are defined using the following schemas:

    • indico.modules.search.result_schemas.AggregationSchema
    • indico.modules.search.result_schemas.BucketSchema

    Filters

    Filters act upon aggregations on structured data. The key and filter values from an AggregationSchema allow you to define human-readable labels. For example, a bucket with key: "CERN" and filter: "cern" can be used to construct a filter like affiliation=cern.