Prescripto – MyDoctor is a production-ready full-stack healthcare appointment platform that allows patients, doctors, and administrators to interact through a secure, role-based system.
Inspired by real-world platforms like Practo and Apollo, this project demonstrates end-to-end ownership — from frontend architecture and UI/UX to backend APIs, authentication, payments, and deployment.
-
🔗 Live Website:
https://byteblogs-frontend.onrender.com/ -
📂 GitHub Repository:
https://github.com/akashsingh062/Prescripto-My-Doctor
- JWT-based authentication
- Role-based access control (Admin / Doctor / User)
- Protected routes on frontend and backend
- Secure password hashing using bcrypt
- Browse doctors by speciality
- Book appointments with date & time slots
- Online payments using Razorpay
- View, cancel, and manage appointments
- Manage personal profile and avatar
- Doctor dashboard with analytics
- View assigned appointments
- Complete or cancel appointments
- Manage availability and profile details
- Admin dashboard with platform metrics
- Add and manage doctors (with image upload)
- Toggle doctor availability
- View and manage all appointments
- Full system-level control
Prescripto follows a clean, scalable, role-based architecture designed for real-world healthcare workflows.
- React 19 + Vite
- Context API for global state management
- Role-based routing with React Router
- Tailwind CSS for responsive UI
- Razorpay checkout integration
- Node.js + Express
- MongoDB with Mongoose
- Controller–Model–Middleware pattern
- Role-specific JWT authentication middleware
- Cloudinary for image storage
- Multer for file uploads
User visits platform
↓
Browse doctors & specialities
↓
Select doctor & slot
↓
Book appointment
↓
Pay via Razorpay
↓
Manage appointments & profile
frontend/
├── pages/ # User, Doctor & Admin pages
├── components/ # Reusable UI components
├── context/ # Admin, Doctor & App contexts
└── App.jsx
backend/
├── controllers/ # Business logic
├── models/ # MongoDB schemas
├── routes/ # Role-based APIs
├── middlewares/ # Auth & uploads
└── server.js
/api/admin/login/api/admin/add-doctor/api/admin/all-doctors/api/admin/appointments/api/admin/dashboard
/api/doctor/login/api/doctor/appointments/api/doctor/dashboard/api/doctor/profile/api/doctor/update-profile
/api/user/register/api/user/login/api/user/book-appointment/api/user/appointments/api/user/payment-razorpay/api/user/verifyRazorpay
The backend serves a live HTML API documentation page at the root (
/).
- Integrated Razorpay Checkout
- Secure server-side order creation
- Payment verification on backend
- Appointments confirmed only after successful payment
- React 19
- Vite
- React Router DOM
- Tailwind CSS
- Axios
- React Toastify
- Node.js
- Express
- MongoDB & Mongoose
- JWT
- bcrypt
- Multer
- Cloudinary
- Razorpay
- JWT verified on every protected request
- Separate middleware for Admin, Doctor, and User
- Passwords never stored in plain text
- Role isolation prevents privilege escalation
- Frontend deployed on Render
- Backend APIs publicly accessible
- Environment variables securely configured
- Cloudinary used for production media storage
- Why Context API over Redux
- How role-based routing and middleware enforce security
- Secure appointment booking and payment workflow
- Clean separation of frontend and backend
- Production-ready deployment strategy
- Prescription management
- Chat between doctor and patient
- Email/SMS appointment reminders
- Advanced admin analytics
- HTTP-only cookie authentication
Akash Singh
Full-Stack Developer | React | Node.js | MongoDB
This project represents a real-world, production-style full-stack application, not just a demo.