Prescripto is a modern MERN Stack healthcare platform designed to simplify the process of booking doctor appointments online. It offers patients a seamless way to schedule consultations, while providing doctors with tools to manage availability, appointments, and patient information.
- π₯ Patient-Friendly Portal β Browse doctors, check availability, and book appointments with ease.
- π¨ββοΈ Doctor Dashboard β Manage schedules, view bookings, and update availability in real time.
- π Secure Authentication β User accounts for patients & doctors with JWT-based login and role-based access.
- π Admin Panel β Centralized control for verifying doctors, managing users, and monitoring platform activity.
- π Smart Booking System β Prevents double bookings and ensures smooth scheduling.
- π± Responsive UI β Optimized with TailwindCSS for mobile and desktop experiences.
- Register/Login securely.
- Search and filter doctors by specialization.
- Book and manage appointments.
- View doctor profiles and availability.
- Profile creation with specialization, fees, and availability slots.
- Accept or reject patient appointment requests.
- Manage schedules and update availability dynamically.
- Verify & approve registered doctors.
- Manage all users (patients/doctors).
- Monitor platform analytics and activity.
- Frontend: React.js, TailwindCSS
- Backend: Node.js, Express.js
- Database: MongoDB
- Authentication: JWT, bcrypt for password hashing
- Other Integrations: Cloudinary (doctor profile images), Zod (validation)
Follow these steps to set up Prescripto locally on your machine.
Make sure you have the following installed:
- Node.js (v14.0.0 or higher)
- npm or yarn
- Git
- MongoDB (local installation or MongoDB Atlas account)
- Cloudinary account (for image storage)
-
Clone the repository
git clone https://github.com/your-username/prescripto.git cd prescripto -
Set up the Backend
cd backend npm installCreate a
.envfile in the backend directory:# Currency Configuration CURRENCY=INR # JWT Secret for authentication JWT_SECRET=your_jwt_secret_here # Admin Panel Credentials ADMIN_EMAIL=admin@prescripto.com ADMIN_PASSWORD=your_admin_password # MongoDB Setup (required) MONGODB_URI=mongodb://localhost:27017/prescripto # OR for MongoDB Atlas: # MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/prescripto # Cloudinary Setup (required) CLOUDINARY_NAME=your_cloudinary_name CLOUDINARY_API_KEY=your_cloudinary_api_key CLOUDINARY_SECRET_KEY=your_cloudinary_secret_key # Payment Integration (optional) RAZORPAY_KEY_ID=your_razorpay_key_id RAZORPAY_KEY_SECRET=your_razorpay_key_secret STRIPE_SECRET_KEY=your_stripe_secret_key
-
Set up the Frontend
cd ../frontend npm installCreate a
.envfile in the frontend directory:VITE_BACKEND_URL=http://localhost:4000 VITE_RAZORPAY_KEY_ID=your_razorpay_key_id
-
Set up the Admin Panel
cd ../admin npm installCreate a
.envfile in the admin directory:VITE_CURRENCY=βΉ VITE_BACKEND_URL=http://localhost:4000
-
Start the Backend Server
cd backend npm start # Server will run on http://localhost:4000
-
Start the Frontend (Patient Portal)
cd frontend npm run dev # Frontend will run on http://localhost:5173
-
Start the Admin Panel
cd admin npm run dev # Admin panel will run on http://localhost:5174
-
MongoDB
- Local: Install MongoDB locally and use
mongodb://localhost:27017/prescripto - Cloud: Create a MongoDB Atlas account and get your connection string
- Local: Install MongoDB locally and use
-
Cloudinary (Required for image uploads)
- Sign up at Cloudinary
- Get your Cloud Name, API Key, and API Secret from the dashboard
-
Payment Gateways (Optional)
- Email:
admin@prescripto.com - Password:
your_admin_password(as set in your .env file)
- Built a role-based multi-user platform (Admin, Doctor, Patient) with secure JWT authentication.
- Designed a smart booking algorithm preventing appointment conflicts and enabling real-time availability management.
- Integrated Cloudinary for storing and managing doctor profile images.
- Developed an admin dashboard to approve doctors, manage users, and oversee bookings.
- Implemented Zod validation across forms ensuring secure and error-free data entry.
- Responsive UI/UX with TailwindCSS for a clean and modern interface.
We welcome contributions from the community! π Here's how you can get involved:
-
Fork the Repository
- Click the "Fork" button at the top right of this repository
-
Clone Your Fork
git clone https://github.com/your-username/prescripto.git cd prescripto -
Set up Development Environment
- Follow the Getting Started guide above
- Make sure all services are running correctly
-
Create a Feature Branch
git checkout -b feature/amazing-feature
-
Make Your Changes
- Write clean, well-documented code
- Follow existing code style and conventions
- Add tests if applicable
-
Test Your Changes
- Ensure all existing tests pass
- Test your new feature thoroughly
- Verify the application runs without errors
-
Commit Your Changes
git add . git commit -m "Add amazing feature: detailed description"
-
Push to Your Fork
git push origin feature/amazing-feature
-
Open a Pull Request
- Go to the original repository
- Click "New Pull Request"
- Provide a clear description of your changes
- Link any relevant issues
- Code Style: Follow existing patterns and use meaningful variable names
- Commits: Write clear, concise commit messages
- Documentation: Update README and comments for significant changes
- Testing: Ensure your code doesn't break existing functionality
- Issues: Feel free to open issues for bugs or feature requests
- Use the provided environment variables structure
- Test across all three applications (frontend, admin, backend)
- Ensure responsive design for mobile compatibility
- Follow security best practices, especially for authentication
- π Bug fixes and improvements
- β¨ New features (payment gateways, notifications, etc.)
- π Documentation improvements
- π¨ UI/UX enhancements
- π§ͺ Testing and quality assurance
- π§ Performance optimizations
Distributed under the MIT License. See LICENSE for details.
If you find Prescripto useful, please β this repo and share it!
For questions, feedback, or collaboration:
- π§ Email: contactyashtiwari912@gmail.com
- πΌ LinkedIn: Connect with Developer
- π Issues: Report bugs or request features