A full-stack Doctor Appointment Booking platform built with the MERN stack, featuring secure authentication, doctor listings with specialization filters, appointment scheduling, and integrated Razorpay payment for seamless online booking. It also includes a dedicated Admin panel where the admin can add and manage doctors, monitor appointments, and oversee platform activity, along with Doctor dashboards that allow doctors to review patient bookings, control their availability, and take action on appointments in real time.
Frontend:
Backend:
Deployed On:
- User Authentication: Secure user authentication for account creation and login.
- Profile Management: Users can update personal details and manage their profile information.
- Filter Doctors: Filter doctors by specialization or category for easy selection.
- Appointment Booking: Book appointments with preferred doctors by choosing available dates and time slots.
- Manage Bookings: View, manage, and track booked appointments.
- Razorpay Payment Integration: Fully secure online payment system for booking confirmation.
- Doctor Login System: Doctors can log in securely to their dedicated panel.
- Appointment Review: View upcoming appointments and patient details.
- Appointment Actions: Accept, cancel, or mark appointments as completed.
- Availability Management: Update availability status and control scheduling.
- Admin Login Panel: Dedicated admin authentication for secure access.
- Doctor Management: Add new doctors, update details, and manage listings.
- System Monitoring: Track platform statistics, booking insights, and dashboard analytics.
- Appointment Supervision: Monitor all user-doctor appointments across the system.
- Platform Control: Manage user and doctor activity, availability, and account states.
- Responsive Design: Fully responsive design for seamless use on any device.
-
Clone the repository:
git clone https://github.com/rajeevkrS/Appointment-Booking-System
-
Install dependencies in admin, backend and frontend:
cd admin npm install cd backend npm install cd frontend npm install
-
Set up environment
.envvariables:# BACKEND ENV GUIDE # mongodb database MONGODB_URI= your mongodb url # cloudinary setup CLOUDINARY_NAME= your cloudinary name CLOUDINARY_API_KEY= your cloudinary api key CLOUDINARY_SECRET_KEY= your cloudinary secret key # for password secret JWT_SECRET = your jwt secret # for razorpay payment RAZORPAY_KEY_ID= your razorpay key id RAZORPAY_KEY_SECRET= your razorpay secret key # admin login info ADMIN_EMAIL= your admin email ADMIN_PASSWORD= your admin password # currency CURRENCY= your currency # FRONTEND ENV GUIDE VITE_BACKEND_URL= your backend url VITE_RAZORPAY_KEY_ID= your razorpay key id # ADMIN ENV GUIDE VITE_BACKEND_URL= your backend url
-
Run the application: In the
admindirectory, start the Admin React app:npm run dev
In the
backenddirectory, start the server:npm run server
In the
frontenddirectory, start the Frontend React app:npm run dev
Here are listed all available API endpoints along with a brief description of each.
POST /api/user/register: create new userPOST /api/user/login: user loginGET /api/user/get-profile: get user profilePOST /api/user/update-profile: update user profilePOST /api/user/book-appointment: book an appointmentGET /api/user/appointments: get all appointmentsPOST /api/user/cancel-appointment: cancel an appointmentPOST /api/user/payment-razorpay: make payment with razorpayPOST /api/user/verifyRazorpay: change status after verify razorpay
POST /api/doctor/login: doctor loginGET /api/doctor/appointments: get logged in doctor's appointmentsPOST /api/doctor/complete-appointment: complete an appointmentPOST /api/doctor/cancel-appointment: cancel an appointmentGET /api/doctor/dashboard: get logged in doctor's dashboard dataGET /api/doctor/profile: get doctor profilePOST /api/doctor/update-profile: update doctor profileGET /api/doctor/list: get doctor list
POST /api/admin/login: admin loginPOST /api/admin/all-doctors: manage all doctorsPOST /api/admin/add-doctor: add doctorsPOST /api/admin/change-availability: change availability any doctorGET /api/admin/appointments: get all appointmentsPOST /api/admin/cancel-appointment: cancel an appointmentGET /api/admin/dashboard: get all data on dashboard
Please check it out here. (Go for Doctor Login)
If you want to contact me, you can reach me through below handles.
Feel free to contribute to the project by opening issues or creating pull requests. Your feedback and suggestions are highly appreciated.