Skip to content

Forzafonz/Scheduler

Repository files navigation

Tweeter Project:

About:

The interview scheduler is a single page Full Stack application. It allows user to book an appointment and choose an interviewer. The application utilizes WebSocket connection to support multiple user connections. It allows data to update across all session without users refreshing the page.

The application uses a wide range of testing technics:

  1. Static testing;
  2. Unit and Integration testing (StoryBook, Jest);
  3. E2E testing (Cypress).

The overall test coverage for the application is 95%: coverage

The app has been deployed on Netlify and can be accessed via the link:
https://goofy-noether-013749.netlify.app/
Please allow approximately 15 seconds for application to start up. It runs on AWS servers, so if application has been inactive for 30 minutes, it will be terminated so it needs some time to restart.

Key Features:

  • Single Page App;
  • Built using functional React;
  • Reducer was used to controll application state;
  • WebSocket was used to allow for synchoniously updating data in multiple active clients;
  • 95% of application is covered by unit and integration tests.

Dependencies:

  • Node.js
  • React
  • Axios
  • Express
  • Jest
  • Cypress
  • PostgreSQL
  • SASS
  • classnames

Functionality Demonstration:

Create Appointment

Create a new appointment for selected day and time slot:

New appointment


Edit Appointment

Edit an existing appointment:

Edit


Delete Appointment

Delete an existing appointment: Delete


Error handling

Demonstrate two types of errors thrown when there is no Student name or Interviewer selected while trying to submit an appointment form: Errors


Spots updating

Demonstrate an update of number of available slots on each appointment createing/deletion. If no spots available for any given day, this day is greyed out: spotsupdate


Websocket implementation

Websocket allows a synchronous update on more than one running instance of application. In this case there are two separate sessions opened in separate browsers. Once a change is made in one open browser, it is reflected in the other one: websocket