jmrmgn / bookings-app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Bookings App

A simple Web Application that manages Bookings.

Config File (.env)

# For simplicity, env file will not be added to .gitignore

REACT_APP_SERVER_URI='http://localhost:3001'
REACT_APP_SCHEDULE_START_TIME='08:00:00'
REACT_APP_SCHEDULE_END_TIME='17:00:00'

Quick Start

Install dependencies

// go to directory
npm install

Mock Server (json-server)

npm run mock:server

The mock server should now be running in localhost:3001

Start Web Application

npm start

The app should now be running on localhost:3000.

Running Cypress Tests (cypress)

npm run cypress:open

An interactive cypress browser should appear.

Model

Bookings

Name Type Sample
id string length + 1
roomName string --
hostName string --
guestsName string --
date date yyyy-mm-dd
from string 12:00
to string 13:00

Features

  • Booking List Page (/)
    • List of Booking
    • Edit Booking (with Icon)
    • Delete Booking (with Icon)
    • Sortable Booking
      • Meeting Room name
      • Host name
      • Guests name
      • Date
      • From-To (08:00-17:00)
    • Able to Filtered By:
      • By the date interval (only days, not times) of the booking time
      • By meeting room
    • Full Text search
      • user name(?) (Might be hostName)
      • meeting room name
  • Single Meeting Room Details Page (/booking/:id)
    • This page can display the name of the room with any image and details about the room/ It should also display the bookings made for that particular room.

Validations

  • A booking can be 30 minute or 1 hour long
  • The first booking start time at 8:00 AM, the last one (start time) at 5:00 PM
  • Booking start time and end time has to be on the same day
  • A meeting room can not be booked if already booked for the chosen time

Additional Notes

  • Responsive
  • Form Validation
  • Error handler
  • Documented Code
  • Cypress Test Case
    • Should be able to show the list of Bookings
      • Should be able to filter and sort the table
    • Should be able to delete a booking
      • Must not delete a booking if cancel is clicked
    • Should be able to update a booking
      • Should be able to show error when the booking is not 30-mins or 1 hour long
      • Should be able to show error when the schedule is not in between of 8:00am - 5pm
    • Should be able to View the Booking

Good to have feature

  • Add Booking
  • Pagination of Booking
  • Login
  • Validation: Can't create booking for previous dates

About


Languages

Language:TypeScript 80.5%Language:JavaScript 13.9%Language:HTML 5.0%Language:Shell 0.5%Language:CSS 0.1%