- HTML
- CSS
- JavaScript
- React
- NodeJS
- Express
- MongoDB
-Material UI
#Front-End Deployment - vercel #Back-End Deployment - Cyclic
- The objective is to create a Full Stack application using React as frontend and NEM as backend which facilitates seamless booking of medical appointments with doctors by the patients.
- App should have the following routes
- Signup & Login
- Create Appointments
- Book Appointments
-
This route should have a login and register form, which the user should be able to toggle between login and register, and the corresponding form should be shown.
-
This user should be prompted by a signup form, where the user will enter the following credentials
- Password
- Confirm Password
-
On form submit store this credential in your backend using the API “/signup”.
-
Follow all the coding standards, hash the password using any encrypting library such as “bcrypt” or “argon2” before storing in database.
-
This user should be prompted by a login form, where the user will enter the following credentials
- Password
-
On form submit, match the entered credentials with the data stored in your backend (Verify both email and password) using the backend API “/login”
-
On successful validation alert “Login Successful”, generate a token for the user using jsonwebtoken (store the token in localStorage) and redirect the user to Create Appointments Route.
-
On entering wrong credential, alert “Invalid Credentials” and re-prompt the user to enter valid credentials.
- The user should be prompted by an appointment form with the following details
- Name
- Image URL
- Specialization (Select tag with Cardiologist, Dermatologist, Pediatrician, Psychiatrist as options)
- Experience
- Location
- Date (Appointment creation date, populate from backend)
- Slots (Number of slots available for the day)
- Fee
- On form submit, store data in backend server on API “/appointments”.
-
Fetch all the appointments posted from the backend server and list them in the form of cards.
-
Sample API Response
-
Your app should have the following functionalities and should be implemented using backend.
- Filter by Specialization (Cardiologist, Dermatologist, Pediatrician, Psychiatrist)
- Sort by date (based on the posted date)
- Search by doctor name
- Pagination (4 Cards per page)
-
Each card should have a “Book Now” button, which when clicked, the number of slots for that particular doctor should decrement by 1.
-
If the number of slots becomes 0, the Book Now button should be disabled.
- Creating all relevant APIs for user auth, posting, and fetching appointments.
- Filter, Sort, Search and Pagination should be done through API. (Doing this manually through fronted will be considered null and void)
- Take care of all good practices - naming conventions, MVC structure etc.