This Maven, cloud-based project is an implementation of a web application built-from-scratch, allowing users to schedule meetings with each other as needed. The project (followed the Model-View-Controller pattern) is deployed on AWS, using its Serverless Computing, which involves AWS IAM, AWS S3, AWS RDS, AWS Lambda, AWS API Gateway.
- Create a new meeting schedule (with its own user-friendly name, such as “Advising Schedule”) with a fixed timeslot duration (of 10,15,20,30, or 60 minutes) that is active from a given start date up until given ending date. For each day there is a daily start hour (such as 9:00 AM or 12:00 PM) and there is a daily end hour (such as 5:00 PM or 8:00 PM). No meeting can be schedule before the start hour; no meeting can be scheduled at or later than the end hour. Upon successful creation of a meeting schedule, the organizer is given a “secret code” that will be used to authenticate all future edit/delete requests.
- Close/Open an individual time slot on a specific day (i.e., 9:30 – 9:45 on 14-Feb-2018)
- Close/Open all time slots at a given time (i.e., 9:15 – 9:30 on any day)
- Close/Open all time slots on a given day (i.e., all timeslots on 12-Feb-2018)
- Cancel any individual meeting at any time
- Review weekly schedule of meetings for a given calendar week (i.e., above is the result for the week of 12-Feb-2018) to see what meetings have been scheduled
- Once a meeting schedule is created, the organizer must tell participants about the scheduled meeting so they can start to register for meetings
- Extend the ending date of a meeting schedule to a future date
- Extend the starting date of a meeting schedule to an earlier date
- Delete a meeting schedule once it no longer is useful. Note that organizers can only delete meeting schedules that they had previously created
- Review weekly schedule of meetings for a given meeting schedule, based on information from an organizer
- Create a meeting in a given open timeslot in a meeting schedule. For each such meeting, the participant can provide a string that will be recorded with the timeslot. Typically this would be just a user name, but it could also be an email address. Upon the successful creation of a meeting, the participant is given a “secret code” that will be used to authenticate all future edit/delete requests
- Cancel a previously scheduled meeting; this must be restricted so participants can only cancel a meeting that they had previously created
- Search for a list of open time slots (filtered by Month, Year, Day-Of-Week, Day-Of-Month, or Timeslot). These individual search filters can be combined to reduce the search results. Within the search results, the participant can simply create a meeting from one of the returned timeslots
- Retrieve a list of meeting schedules more than N days old and delete them from the system
- Retrieve a list of meeting schedules created in the past N hours
We designed our APIs on SwaggerHub. Here is the link to our APIs: API
- Create IAM users with admin access for each team member.
- Create S3 Bucket and upload all static files
- Setup a MySQL database on AWS RDS service. Uses MySQL Workbench to ssh to the server, and create tables according to our defined schema.
- Develop, test, and upload Java files for each Lambda functions to AWS Lambda platform.
- Setup and deploy AWS API Gateway
Integrates AWS Cognito into the application for better authentication.
This project is designed and implemented by a team of WPI students, including: Dung (Kevin) Nguyen, Ryan Johnson, Minh Pham, Nicholas Alescio. The project is guided and supervised by professor George Heineman (WPI).
This project is under MIT License.