ALGOL MEETING SCHEDULER
Note: Unfortunately due to the rising costs of AWS we had to shut down the backend portions of the Algol Meeting Scheduler in early 2019. You can still see the frontend, but portions of the site won't work.
The actual application is designed to allow users to set up a meeting schedule and send it to others, so that they can request meetings are particular times with the organizer.
Organizers can specify a starting and ending date for their schedule, as well as a daily starting time and ending time. They can also select a preferred meeting length, from ten minutes to an hour. Organizers can open or close specific time slots, as well as all time slots at a particular time or on a particular day. If a time slot is closed, participants can not schedule a meeting for that time.
Once an organizer has created a schedule, she is given a schedule ID and a secret code. The schedule ID can be given to participants, or shared as a URL such as https://algol.petitti.org/schedule/8bDj38. The secret code is for the organizer to use if she wants to edit the schedule in the future. For example, she could extend the start or end dates or close particular time slots. The organizer can also use the secret code to see the names of all participants and when their meetings are scheduled for.
A participant can access a schedule by using its schedule ID. From here, he can request a meeting on a particular time and date, as long as the time slot is open and no other participant has requested a meeting at that same time. Participants are given a secret code when they request a meeting.
Our team had one week to plan out the project, including designing the API using Swagger, drawing up UML diagrams, and writing out use cases. Then, from November 26 to December 14, 2018 we worked at a feverish pace to complete the entire project.
The back-end of the project was done in AWS. API requests are processed by an AWS API gateway, then passed along to a relevant lambda function. These lambda functions were written in Java using the Entity-Boundary-Controller design scheme. The lambda functions parse the incoming JSON data into Java objects, then completes the requested action. They connect to the database, a MySQL instance running in AWS RDS, through JDBC.
The class was divided into groups of four students, and each group was given a team name based on the names of stars. I was already friends with the three other group members I worked with before the class, so it was easy for me to find a group. Since our team was the first to sign up, we got the "A" star name, Algol.
Joseph Petitti was the fearless leader of Team Algol. He wrote the entire front-end in TypeScript for Google's Angular framework, set up much of the AWS back-end, designed and deployed the API, and spent far too many late nights debugging and testing.
Matt Hagan was responsible for getting the initial AWS storage, configurations, and domain set up. As time went on he transitioned to being the EBC Controller lead for this project, working primarily with the Lambdas to ensure that the boundary and entity control flow ran smoothly.