/Nova

Mock interviews and Match aspiring developers with interviewers

Primary LanguageTypeScript


Logo

Website to Help developers practice and pass interviews with the help of our professional interviewers.

Demo · Figma Design


PRs welcome made with hearth by dec0dOS


🔹About Nova

Nova, a website dedicated to assisting users in practicing interviews with the best and most experienced interviewers.

🔹User stories

🔸 As a guest

  • As a guest, I want to be able to navigate and browse through the landing page. So I can see what Nova is all about.
  • As a guest, I want to be able to sign up as an interviewee so that I can verify my email address.
  • As a guest, I want to be able to sign up as an interviewer so I can help other interviewees.

🔸 As a user

  • As a user, I want to be able to verify my account from the email address so I can enjoy Nova services.

  • As a verified user, I want to be able to log in as an interviewee so I can access Nova system.

  • As a verified user, I want to be able to display my profile so I can view my information.

  • As a verified user, I want to be able to modify my information so I can update my information.

  • As a verified user, I want to be able to display my interviews history so I can display my interviews history.

  • As a verified user, I want to be able to delete any pervious interview so I can add new interview.

  • As a verified user, I want to be able to display my upcoming interviews so I can check the information of upcoming interviews.

  • As a verified user, I want to be able to join the interview through the zoom link so I can join the interview.

  • As a verified user, I want to be able to cancel any interview so I can add new interview.

  • As a verified user, I want to be able to display my interviews reviews so I can check the information of reviews.

  • As a verified user, I want to be able to save any reviews so I can come back to the review easily.

  • As a verified user, I want to be able to filter saved and unsaved reviews. So I can see the saved reviews and the unsaved reviews.

  • As a verified user, I want to be able to create interview by inputting the requirments of the interview. So I can create an interview.

  • As a verified user, I want to be able to logout so I can login again.


🔸 As an interviewer

  • As a confirmed interviewer, I want to be able to log in as an interviewer so I can access Nova system.

  • As a confirmed interviewer, I want to be able to display my profile so I can view my information.

  • As a confirmed interviewer, I want to be able to edit my information so I can update my information.

  • As a confirmed interviewer, I want to be able to add my available free time so I can be on time to interview.

  • As a confirmed interviewer, I want to be able to display my interviews schedule so I can check the information of interviews.

  • As a confirmed interviewer, I want to be able to display my upcoming interviews so I can check the information of upcoming interviews.

  • As a confirmed interviewer, I want to be able to display my interviews history so I can check the information of previous interviews.

  • As a confirmed interviewer, I want to be able to logout so I can login again.


🔸 As an admin

  • As an admin, I want to be able to log in as an admin so I can access Nova system.

  • As an admin, I want to be able to display all Nova users so I can see all the users.

  • As an admin, I want to be able to delete any interviewee so I can remove any fake interviewee.

  • As an admin, I want to be able to delete any interviewer so I can remove any interviewer not meeting the requirements.

  • As an admin, I want to be able to display all interviewers applications so I can see all the interviewers applications.

  • As an admin, I want to be able to delete any interviewer application so I can remove the interviewer application.

  • As an admin, I want to be able to reject any interviewer application so I can remove the interviewer application.

  • As an admin, I want to be able to approve any interviewer application so I can confirm the interviewer application.

  • As an admin, I want to be able to logout so I can login again.


🔹User journey

As a guest.

  • By entering the website, the user can see the landing page. And will see the logo and the description of the website.
  • The user can also see the buttons sign up and login. When the user click the sign up button, a Modal will show up with sign up form. When the user click the login button, a Modal will show up with login form.
  • Sign up form will have a full name field, an email field, a password field, a confirm password field a submit button and a cancel button. When the user click the submit button, the user will be able to sign up as an interviewee based on the requirements of the form. When the user click the cancel button, the Modal will close.
    • Login form will have a email field, a password field, a submit button and a cancel button. When the user click the Login button, the user will be able to login based on the requirements of the form. When the user click the cancel button, the Modal will close.

As a user:

  • After the user sign up, an email will be sent to the user's email address. The user will be able to verify the email address. When the user click the verify button, the user will be able to login.
  • Login form will have a email field, a password field, a submit button and a cancel button. When the user click the Login button, the user will be able to login based on the requirements of the form. When the user click the cancel button, the Modal will close.
  • After the user login, the user will be able to see the dashboard. The user can click the profile button to see the profile of the user. The user can click the logout button to logout.
  • by Clicking on the the profile tab, the user will be able to see the user information. There will be a Start a Practice interview button.
  • When the user click the Start a Practice interview button, a Modal will show up with a multi steps form to create an interview. The user can click the Cancel button to close the Modal.
  • The first step of the multi steps form will be the specialization. The user can click the next button to go to the next step.
  • The second step of the multi steps form will be the language. The user can click the next button to go to the next step.
  • The third step of the multi steps form will be the questions category. The user can click the next button to go to the next step.
  • The fourth step of the multi steps form will be the available dates and hours for the specifications that were entered. The user can click the next button to go to the next step.
  • If no available dates and hours are found, a message will be shown and the user will be able to click the back button to go to the previous step.
  • The fifth step of the multi steps form will be informing the user that the interview is created and he got matched with interviewer. The user can click the done button to close the Modal.
  • The user can see more details about the interview either in the dashboard or in the email that was sent to the user.
  • The user can see tabs that is about upcoming interviews, interview history, reviews and settings.
  • By clicking on the tabs respectivley The user can see the interviews that are upcoming, the past interviews, the reviews of the interviews and the settings.
  • Upcoming interviews tab will show the details of the interviews that are upcoming. The user can click on join button, a new browser tab will redirect the user to zoom application to join the interview. or cancel button to cancel the interview.
  • Cancel interview will send an email to the user that the interview is canceled.
  • Reviews tabs will have a filter button. When the user click the filter dropdown button, the user can see the filter options. The user can click the filter options to filter the reviews based on saved and unsaved reviews.
  • Settings tab will have an optional inputs including (image, link to cv, level of experience and bio). The user can click the save button to save the optional inputs.

As a admin:

  • After the admin login, the admin can click the profile button to see the dashboard.
  • The admin can see tabs that is about interviewees, interviewers, interviewers applications, and logout.
  • Interviewees tab will show the details of the interviewees. The admin can click on the delete button to delete the interviewee.
  • Interviewers tab will show the details of the interviewers. The admin can click on the delete button to delete the interviewer.
  • Interviewers applications tab will show the details of the interviewers applications. The admin can click on the delete button to delete the interviewer application, the approve button to approve the interviewer application, and the reject button to reject the interviewer application.
  • Logout will logout the admin.

🔹Built With

  • Node.js

  • Express.js

  • Typescript

  • Zoom API

  • MongoDB

  • Mongoose

  • React.js

  • Redux

  • Ant Design

  • Axios

  • Jest

  • Supertest

  • JWT

  • Nodemailer


🔹 Database Schema

🔹Installation

  1. clone Nova repo
  https://github.com/GSG-G11/Nova
  1. install npm packages in server folder
yarn install
  1. install npm packages in client folder
cd client
tarn install
  1. write env variables in .env file
DEV_DATABASE_URL=mongodb://localhost:27017/nova
TEST_DATABASE_URL=mongodb://localhost:27017/test-nova
JWT_SECRET='<your secret key>'
API_KEY='<your API key>'
API_SECRET='<your secret key>'
EMAIl='<your email>'
EMAIL_PASSWORD='<your password>'

🔹Contributors

✨ Our Team Leader