Meeting Scheduler

Networks

Overview

About the project

Meeting scheduler to efficiently book an appropriate time for all participants. Socket programming project for networks class

Date
April 23, 2023
My Role
Designed and developed the code/algorithms for the project
The problem

To find a convienent time

Coordinating a meeting time that suits everyone's schedule can be a frustrating and time-consuming task, particularly when multiple individuals are involved. People often need to exchange availability through back-and-forth emails and allowfor several days to finally schedule a meeting. However, the introduction of an efficient meeting scheduler can alleviate these challenges and enable users to reclaim valuable hours that would otherwise be spent on unnecessary correspondence, allowing them to focus on more important matters. While certain online survey tools facilitate group scheduling by manually populating a shared availability table, the process could be further streamlined and enhanced. An ideal scheduler would not only collect and consolidate the availability of all participants but also leverage this information to determine the optimal meeting time that accommodates everyone's preferences. By leveraging the scheduler's capabilities, users can experience a significant boost in productivity, effortlessly arranging meetings without the hassle of constant coordination.

The solution

Building the scheduler

We are going to develop a system that receives a list of names and returns the time intervals that work for every particpant based on their availability. The availability of every participant is stored on a backend server which cannot be accessed by any servers or clients. The participant availability can be stored on more than one backup server based on the number of participants. A main server is used to manage which backend server a participant availability is stored on and it also receives the requests from the client.

When the client enters the list of names into the client application, the application sends a request to the main server (via a TCP connection) and also receives the reply via the same connection. When the request is received the main server sends a request to the necessary backend server where the participants availability is stored (via a UDP connection). The backend server then finds the appropriate time for the participants received and sends this back to the main server. If the participant information is stored in more than one backend server, the main server also finds a time that works between all the results received from the backend servers and finally sends this result to the client.

illustration of the system
client server
main server
backend server A
backend server B

View source code here