The interview Scheduler app assists students by tracking upcoming interviews. Utilizing React for the front end and a Postgres database for the back end, this SPA (single page application) enables users to book, edit, and cancel scheduled interviews in real-time. The client and server apps communicate over HTTP using Axios requests. Also, best practices of Test Driven Development were followed during the building of all the app's components. Testing frameworks used during this project were Jest, Storybooks, and Cypress to enable unit, integration, and End-2-End (E2E) testing.
- 🔗 Interview Scheduler
- Table of Content
- 🌟 Features
- 🚀 Getting Started
- 🧱 Main Structure
- 📦 Tech Stack (Dependencies)
⚠️ Disclaimer
- A student can select a day and view the number of interview spots available for that day.
- A student can add, edit, and delete interviews.
- A student can select or change an interviewer.
- Fork repository.
- Clone Repository to local machine.
- Install all dependencies using the
npm install
command. - Fork and clone the scheduler-api repository from here.
- In terminal run the
startpostgres
command to start the PostgreSQL server. - Follow the README.md instructions from scheduler-api to setup and seed the scheduler_development database.
***To run cypress you will also need to create the scheduler_test database *and install X-server(for WSL users only):
- In a new terminal window
cd scheduler-api
then runpsql -U development -d scheduler_test
. - Login using the same info from scheduler-api README.md.
- Next duplicate the .env.development file and rename it .env.test. In the new file, change only the PGDATABASE value to scheduler_test.
- Now run the test server using this command
NODE_ENV=test npm start
once ready open the browser and go to localhost:8001. - Then seed the database by inserting the following url in the browser
http://localhost:8001/api/debug/reset
or clicking here. - Download and install X-server VcXSrv
- Download the configuration file here and copy it to your desktop. You will be using this file to run VcXSrv.
cd scheduler-api
- Running Scheduler Development Database
npm start
- Running Scheduler Test Database
NODE_ENV=test npm start
cd scheduler
- Running Webpack Development Server
npm start
- Running Jest Test Framework
npm test
- Running Storybook Visual Testbed
npm run storybook
- Running Cypress Test Framework
npm run cypress
├─── .storybook
├─── cypress # cypress end to end testing
│ ├─── fixtures
│ ├─── integration
│ ├─── plugins
│ ├─── support
├─── public # contains static files such as images
│ ├─── images
├─── src
│ ├─── _mocks_ # mock data
│ ├─── components # react components
│ ├─── helpers # all helper functions to manage interviews
│ ├─── hooks # custom react hooks
│ ├─── styles # sass style sheets
├─── stories # contains all the tests for storybook
├─── .env.development
├─── .eslintrc.json
├─── .gitignore
├─── README.md
├─── cypress.json
├─── jsconfig.json
├─── package-lock.json
└─── package.json
- Axios
- Classnames
- Normalize.css
- React **(V^16.9.0)
- React-Dom
- React-Scripts
- @babel/core
- @storybook/addon-actions
- @storybook/addon-backgrounds
- @storybook/addon-links
- @storybook/addons
- @storybook/react
- @testing-library/jest-dom
- @testing-library/react
- @testing-library/react-hooks
- Babel-Loader
- Prop-Types
- React-Test-Renderer
- Sass
- This is a project for LHL web development bootcamp and is not meant for production use.