Planado

blog-image

Planado is a scheduling and room booking tool for the free video conferencing software Jitsi Meet. Jitsi-Meet is an excellent videoconferencing software, but it does not offer the possibility to schedule conferences in advance without the risk of the room being occupied by others beforehand. Planado tries to solve this problem with a simple booking system and clever routing of users.

Planado sits transparently on top of Jitsi-Meet without requiring any custom configurations to Jitsi-Meet itself and without the Jitsi-Meet server even needing to know about Planado’s existence. Furthermore, this leads to no additional load on the Jitsi-Meet server. Among other things, this makes it possible to run Planado for external Jitsi-Meet hosting without any disadvantages for either side. For example, our demo version of Planado uses the public, official Jitsi-Meet server of the Jitsi project.

Planado takes a simple and privacy-preserving approach here. The service processes and stores as little information as necessary and does not share any data with Jitsi-Meet. Moreover, no identifiable or personal data is stored at any time, making Planado as privacy-friendly a service as Jitsi-Meet itself.

It is also highly configurable, no easily extended with additional functions and integrated with other services.

Use Planado

The planning and/or booking process takes place in a few simple steps:

The data (name, date, time, repetition rhythm) of a conference are entered into a booking form.

Planado generates a unique invitation link for the conference that can be sent to others. It is also possible to edit the already booked video conference via the “Admin URL”, for example to change the date.

There is also the option to import a calendar event into Thunderbird, Outlook or similar calendar programs (also on the smartphone).

By clicking a button, the invitation (including the calendar event) can either be copied to be sent via any messenger, for example, or sent via e-mail using a second button. With neither option is it possible for Planado to know to whom the invitations are sent.

When the invitation link is opened, Planado checks whether the start time of the respective conference has already been reached. If this is not the case, a “Please wait” screen appears. As soon as the specified start time is reached, Planado automatically forwards to the (until then secret) video conference room on Jitsi-meet.

Technical Background

Planado is fully implemented in the server-side scripting language PHP. For storing and retrieving the conference data Planado uses the database system MariaDB, or MySQL-compatible alternatives. Smaller optional additional functions are implemented with a few lines of Javascript. This ensures high performance even on weak end devices of the users and at the same time low load for the hosting server, even with large amounts of simultaneous requests and also makes Planado usable for a wide range of modern and legacy end devices, as long as they have a web browser.

An API is planned for upcoming versions and already implemented in parts, so that Planado can also be integrated into other projects and websites.

If the data is passed to Planado via the form, it generates several 16-digit random numbers from them and a random component. The first one serves as the actual room number, which is later used for forwarding to Jitsi-Meet and is initially kept secret from the users (until the start of the videoconference). The second number serves as an invitation identifier and can be used to join a conference or to call up the waiting screen if the conference has not yet started. This principle of a secret room identifier and a public invitation identifier is similar to the two-key principle known from established asymmetric encryption algorithms such as PGP/GPG. A final random number is used as an “admin identifier” to allow subsequent modification of the conference data by the person who originally created the conference.

Planado stores the three identifiers in the database together with the start time (in UNIX time) and information about the repetition rhythm for recurring conferences. The stored information in Planado has the form of:

iid|rid|aid|time|recev|rectype
0...1|1...7|1...5|1623852469|5|1weekly

Other information such as the conference name is not stored in Planado, but instead is passed back to Planado (client-side) when needed, e.g. to create a calendar entry.

Operators of a Planado instance can see when an event is planned, which Invitation ID & Admin ID are stored for it and which Jitsi-Meet room will be used for it, but it is not possible to see who planned this conference, who was invited for it and for which purpose.

Planado’s calendar function does not have the ability to access the database, which would make it unlikely but not impossible for unauthorized people to find out the start time of a conference. Instead, all the information needed for the calendar entry is passed directly to the script via URL parameters. After a conference has been booked, Planado provides a download link for the calendar file in the overview with the corresponding parameters (including the conference name). This link is also sent to others via the invitations, so that they can generate their own calendar entries (with identical content).

The disadvantage of this method is that new download links for the calendar entry have to be sent to all participants whenever, for example, the start date or time of a conference changes.

When an invitation link is called up, Planado uses the database to check whether the start time of the video conference stored there for the respective invitation ID has already been reached. If this is not the case, a waiting screen is displayed. This screen reloads every 30 seconds, whereby the time alignment starts again. However, if the start time has been reached, Planado uses the room identifier rid stored in the database to forward the users to Jitsi-Meet by simply using the room identifier as the Jitsi-Meet room.

Our demo server, which has already been mentioned, thus automatically forwards calls to https://meet.jit.si/rid .

The main condition for Planado is therefore that the 16-digit room identifier, which is unknown to all participants before the start of the conference, is so difficult (and accordingly improbable) to guess that the Jitsi-Meet room used is in any case not yet occupied and no uninvited persons join by chance during use. Due to the 16-digit numeric room name, there are a total of 100,000,000,000,000 different possible combinations, or possible room names. Of course, after entering the room in Jitsi-Meet, a room password can be created and/or even end-to-end encryption can be enabled. Room identifier.

Finally, there is a last module that finally deletes data of past conferences from the database and implements the function of recurring conferences. By default, past conferences are deleted from the database 23h after the stored start time. For recurring events, after this time the recev counter in the database is decreased by 1 and the next start time is shifted into the future based on the rectype (e.g. by 1 week, 1 month, etc.).

This “cleanup module” is called by default every time Planado itself is called. Alternatively, it can also be called directly by the server via PHP, for example using a cron job.

More information about Planado, how to install & configure it on your own server and how to participate in the development of the project can be found on the project page (external on Codeberg.org).

Planado

Schedule Your Jitsi Meet Conferences.