Skip to content

A flight booking website developed using MERN stack. (Both frontend and backend included)

Notifications You must be signed in to change notification settings

DareenMohamed/Flight-Booking-Website

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flight-Booking-Website with MERN

Project Title: BeefOrChicken (BOC) Airlines Airline Reservation System. A web application for Beef or Chicken airlines through which individuals can reserve and pay for flights in order to travel to different countries and sometimes domestic cities.
Motivation: This application was created to help Beef or Chicken airlines customers to search for flights, reserve seats, and pay for flights in order to travel to different countries and sometimes domestic cities easily and efficiently.
Screeshots:
plot
plot
plot
plot
plot
Build Status: Stripe API, used for payment, is unstable so users need to refresh the page if they encounter an error.

Code Style: Standard style where we indent inside all methods / classes / functions equal indentations and if else & while nested blocks have extra indentations than the outside tag. Curly brace start right next to the methods’ signatures (inline). Variables , constans and functions names have a naming convention where they are all of camel cases if they are composed of more than one word and we try to be as descriptive & concise as possible when picking the names. No digits are used in names as much as possible . Errors return with a descriptive message of the error source Functions Length is not too long otherwise you would need to use a helper method Comments are added whenever possible to specify what the function/api call is used for to be easily understandable by future open source contributors that wish to contribute.

Tech/Framework used: MERN stack (MongoDB, Express JS, React JS and Node JS) React Bootstrap Framework Stripe Framework Material UI Framework

Features: -A user can create an account / login / view their profile / edit their profile details / change their password

  • Users can make their reservations in an easily understandable flow where they specify their destination , where they are travelling from and their travelling dates. When reserving, they get to choose departure and return flights that suits them best and falls under their budget based on the number of passengers they are reserving for and the cabin class.
  • Users can pick the seats they find most suitable when reserving while getting a glimpse on where it will actually be in the actual plane.
  • Users can pay for their reservation using their credit cards in a convenient way.
  • Users can view their reservations at any time and can choose to send themselves their iternary by email .
  • Users can cancel their reservations at any time and they will be refunded with the whole amount
  • Users can choose to edit their reservations.
  • Admins can create , edit , delete and view all flights at any time.

**Installation:** Necessary node modules: **BackEnd:** "axios": "^0.24.0", "bcrypt": "^5.0.1", "body-parser": "^1.19.0", "connect": "^3.7.0", "cors": "^2.8.5", "dotenv": "^10.0.0", "express": "^4.17.1", "i": "^0.3.7", "jsonwebtoken": "^8.5.1", "mongo": "^0.1.0", "mongoose": "^6.0.12", "mongoose-auto-increment": "^5.0.1", "nodemailer": "^6.7.2", "nodemon": "^2.0.15", "react": "^17.0.2", "stripe": "^8.195.0", "uuidv4": "^6.2.12" FrontEnd: "@date-io/date-fns": "^1.3.13", "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", "@material-ui/core": "^4.12.3", "@material-ui/icons": "^4.11.2", "@material-ui/lab": "^4.0.0-alpha.60", "@material-ui/pickers": "^3.3.10", "@mui/icons-material": "^5.0.5", "@mui/material": "^5.0.6", "@mui/styles": "^5.2.0", "@mui/x-data-grid": "^5.0.1", "@mui/x-data-grid-generator": "^5.0.1", "@stripe/react-stripe-js": "^1.7.0", "@stripe/stripe-js": "^1.22.0", "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", "airportsjs": "^0.3.1", "aws-sdk": "^2.1048.0", "axios": "^0.24.0", "bcrypt": "^5.0.1", "bcryptjs": "^2.4.3", "body-parser": "^1.19.1", "bootstrap": "^5.1.3", "date-fns": "^2.26.0", "dateformat": "^5.0.2", "email-validator": "^2.0.4", "is-phone": "^2.0.0", "material-ui-icons": "^1.0.0-beta.36", "mock-aws-s3": "^4.0.2", "moment": "^2.29.1", "mongoose": "^6.1.3", "nock": "^13.2.1", "nodemailer": "^6.7.2", "react": "^17.0.2", "react-alert": "^7.0.3", "react-bootstrap": "^2.0.2", "react-checkmark": "^1.4.0", "react-date-range": "^1.4.0", "react-dom": "^17.0.2", "react-moment": "^1.1.1", "react-phone-input-2": "^2.14.0", "react-redux": "^7.2.6", "react-router-dom": "^5.3.0", "react-scripts": "^4.0.3", "react-scroll": "^1.8.4", "react-seat-picker": "^1.5.3", "react-seatmap": "^0.1.2", "react-stripe-elements": "^6.1.2", "react-tooltip": "^4.2.21", "redux-persist": "^6.0.0", "rsuite": "^5.2.2", "stripe": "^8.195.0", "styled-components": "^5.3.3", "web-vitals": "^1.0.1"

API reference: FlightRoutes
Method: Get URL: /allflights Gets all flights
Method: POST URL: /searchUser Search for a user by email and password
Method: Get URL: "/searchUserByID/:id" Search for a user by their id

Method: Get URL: "/flightById/:id" Search for a flight by its id

Method: POST URL: "/searchFlights" Search for flights with criteria

Method: POST URL: "/searchAvailableFlights" Search for available flights with criteria

Method: POST URL: "/createFlight" Create a flight

Method: Patch URL: "/flightSeats/:id" Updates seats in a flight

Method: Patch URL: "/flight/:id" Updates flight

Method: delete URL: "/flight/:id” Deletes (cancels) a flight UserRoutes

Method: Post URL: “/payment” Handles user’s payment for a reservation


Method: get URL: “/allUsers” Handles user’s payment for a reservation
Method: get URL: “/searchUser” Search with criteria
Method: patch URL: “/user/:id” Updates user info
Method: post URL: “/login” Handles user logging in the system
Method: post URL: “/register” Handles user registering in the system
Method: post URL: “/passwordCheck” Checks user’s password in the DB
Method: get URL: “/CheckAdmin” Checks user’s username in the DB
Method: post URL: “/changePassword/:id” Changes user’s password in the DB ReservationRoutes
Method: Get URL: /allReservations Gets all present reservations

Method: Get URL: /reservationByID/:id returns certain reservations according to ID

Method: Patch URL: "/reserveSeats" Updates chosen seats to be reserved

Method: Post URL: "/mail” Send email with reservation itinerary to user

Method: Post URL: "/createReservation” Reserves a certain round trip for a certain user

Method: delete URL: "/reservation/:id” Deletes (cancels) a user’s reservation

Tests: Registration: User enters his info and presses the “start booking” button, the user should then be redirected to the search for flights page. Login: User enters username and password, he should then be redirected to the search for flights page. Search for flights: User enters flight details then presses the search button, he’s then redirected to the available flights according to the entered criteria Email: An email should be sent to the user after completing a reservation and paying for it. Cancel reservation: After viewing his current reservations, the user can press “Cancel reservation”, this reservation is then cancelled and an email is sent automatically to the user with his refund amount. How to Use?

  • Clone project to your directory
  • Open 2 terminals: frontend and backend
  • Run the command ‘cd backend’ in the backend terminal and run “node app.js”
  • Run the command ‘cd frontend’ in the frontend terminal and run “npm start”
  • A browser tab will be automatically opened
  • The website is ready to be used at http://localhost:3000/ Contribute: You can contribute and help out. A guideline on how to contribute: Any one is free to clone the repo on github to contribute (can open a pull request that will be accepted by the contributors as soon as possible) and they can start developing new features and push them to a new branch that will later be merged to the main to be used later on. Credits: Dareen Mohamed Mark Sroor Lougina Hatim Carol Emad Yasmine Elfares

About

A flight booking website developed using MERN stack. (Both frontend and backend included)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published