The Speaker Platform is an online tool for an International Organization to manage the programme, schedule and speakers of its worldwide annual congress.
Case descriptionAn 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 resultsOn 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 contributionsFirst, 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
Event - Link "Add event" is absent
Event - Add event to group
Drupal - Add new permission to view user email field
User history - Fatal error when saving a user
User history - Add support for entity revision fields
Automatic Entity Label - Avoid leaking render metadata
Group - Restrict content access to only group members?
Workbench Moderation - Unknown column 'moderation_state'
Barrio - Display Suite classes breaks Layout Builder if Display Suite is not installed