Speaker platform

Runner Up

Case summary

The Speaker Platform is an online tool for an International Organization to manage the programme, schedule and speakers of its worldwide annual congress.

Case description

An International Organization approached Happy Coding to develop a platform, linked to their internal CRM, where their community members would contribute to elaborate the programme of the annual congress, and which could be used as a data source to publish the event programme booklet.

Case goals and results

On one hand, our client needs to simplify the collection, validation of the speaker profiles and their suggested sessions.
On the other hand, it needs to easily schedule and extract the final programme.
We automatize these processes by providing this platform. The speaker has its own dashboard to follow its submitted sessions. The conference admin can easily check the completion of speakers profiles and sessions, validate the sessions and schedule them with a simple drag and drop (look at the demo video to see it in action).

Challenges

# Maturing COD

Since this project is about conference management, we decided not to reinvent the wheel. We reused the Conference Organization Distribution, or COD, especially its Event custom entity.

COD for Drupal 8 was in early development when we started using it, and as a result we published several patches to improve the Event module.
In the end, we also used the Group module to separate each event annual congress. On top of event and speakers management, we needed to account for a per-congress schedule containing information about sessions, group of sessions (multi-sessions), rooms and breaks. As a result we developed additional integration between the Group module and the Event module.

# Scheduling a congress, decoupled style

Scheduling sessions is one of the most complex and time-consuming part of organizing a congress. Multiple constraints apply, such as:
- 1 session per room and time slot
- a speaker may only present 1 session per time slot
- no session can be scheduled during break times
- multiple sessions about the same topic can be put one after the other and grouped in a multi-session
- you want to avoid scheduling sessions about the same topic at the same time in different room, but sometimes you have no other choice
To allow the most efficient user experience, we developed a React application that allows to schedule a the whole congress from a unique place. We used fullcalendar.io and linked it to the JSON:API endpoints to directly update Drupal entities in the background while the user just interacts with a calendar.
Our custom solution takes care of all the constraints express above to make it easier to build the final programme for the event.
To handle the constraints we also created custom modules for multi-sessions and break times, which have their own entity types.

# Speaker invitation automatization

The Speaker Platform is linked to the customer’s CRM API. They can invite speakers via mass-mailing in their CRM, then have the speakers synchronized to the Speaker Platform.
Upon receiving their invitation link, speakers can log into the Speaker Platform and fill profile information.
Editors can check whether a speaker updated their profile, and invite them to submit sessions for a specific congress. These sessions can be restricted to a hand-picked set of topics.
We created a dashboard on the user profile page that makes it easy for speakers to enter their personal information and create session proposals.

# Session validation workflow

Before being available for scheduling in the final programme of the congress, sessions go through a validation workflow.
Speakers create sessions proposals, which are reviewed by a committee, and then accepted, rejected or sent back for updates.
We created a dashboard that makes it easy for the committee to list, consult and update the status of the proposed sessions.

# Final export for booklet creation

For each annual congress, a booklet is printed for participants, containing the detailed programme.
We created a page that displays all the information about the final programme of a congress, including dates and times, rooms, speakers, sessions details, etc.
It makes it easy for the booklet designers to export the information and include it in their booklet template.

Community contributions

First, in our proposal and negotiation with the client, we specified that our work is delivered under the license GNU/GPL V2.
We provided following patches (osab & yepa usernames) and feedbacks to the community:

Event - Publishing opportunity for the event
https://www.drupal.org/project/event/issues/3049981

Event - Link "Add event" is absent
https://www.drupal.org/project/event/issues/3049870

Event - Add event to group
https://www.drupal.org/project/event/issues/3090501

Drupal - Add new permission to view user email field
https://www.drupal.org/project/drupal/issues/2799049

User history - Fatal error when saving a user
https://www.drupal.org/node/3107131

User history - Add support for entity revision fields
https://www.drupal.org/node/3107934

Automatic Entity Label - Avoid leaking render metadata
https://www.drupal.org/node/3051165

Group - Restrict content access to only group members?
https://www.drupal.org/project/group/issues/2955656

Workbench Moderation - Unknown column 'moderation_state'
https://www.drupal.org/project/workbench_moderation/issues/2900218

Barrio - Display Suite classes breaks Layout Builder if Display Suite is not installed
https://www.drupal.org/node/2976934

Hosting

Infomaniak

Why should this case win the splash awards?

Because we developed in 2019, this open-source event planning solution which, thanks to its decoupled architecture, perfectly combines the interactivity of React and the solid content structure provided by Drupal. We built it with the contribution spirit that it should help organizing community events.

Case video