A comprehensive web application built with the MERN stack that connects patients with available doctors in real-time, featuring location-based search, availability tracking, and seamless appointment discovery.
- Overview
- Features
- Tech Stack
- Installation
- Usage
- API Documentation
- Project Structure
- Database Schema
- Contact
The Real-Time Doctor Availability & Finder Platform addresses the critical problem of finding available healthcare professionals in real-time. This platform enables doctors to manage their availability status while allowing patients to search and locate nearby available doctors based on specialization, location, and real-time availability.
Patients often struggle to find available doctors in their area, leading to unnecessary delays in healthcare access. This platform bridges the gap by providing real-time availability information and location-based search capabilities.
- π¨ββοΈ Profile Management: Complete doctor profiles with specialization, clinic details, and contact information
- π Location Integration: Set clinic/hospital location using Google Maps
- π Availability Toggle: Real-time availability status updates
- π§ Daily Reminders: Automated reminders to update availability status
- π₯ Hospital Management: Hospital name and location management
- π Appointment Management: View, confirm, or cancel patient appointments
- β° Schedule Management: Set and update consultation timings
- π Appointment Dashboard: Track appointment history and statistics
- π Advanced Search: Search by doctor name, specialization, location, or hospital
- πΊοΈ Map Integration: Visual location display with Google Maps
- β‘ Real-time Status: Live availability indicators
- π± Responsive Design: Mobile-first responsive interface
- π€ User Accounts: Personal accounts for saved searches and preferences
- π Appointment Booking: Schedule appointments with available doctors
- π Appointment Management: View, cancel, and track appointment status
- π Appointment Notifications: Get updates on appointment confirmations
- π Secure Authentication: JWT-based authentication system
- π RESTful APIs: Well-structured API endpoints
- π Real-time Updates: Live status updates using modern web technologies
- π Notification System: Automated reminder system for doctors
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | React.js | User interface and interactions |
| Styling | Tailwind CSS | Modern, responsive design |
| State Management | Redux Toolkit | Application state management |
| Backend | Node.js + Express.js | Server-side logic and APIs |
| Database | MongoDB + Mongoose | Data storage and modeling |
| Authentication | JWT | Secure user authentication |
| Maps | Google Maps API | Location services and mapping |
| Task Scheduling | node-cron | Automated reminder system |
| HTTP Client | Axios | API communication |
| Image Storage | Cloudinary | Cloud Storage |
- Node.js (v14 or higher)
- MongoDB (local or MongoDB Atlas)
- Cloudinary API key
git clone https://github.com/grasyPatel/CheckBeforeGo.git
cd CheckBeforeGocd server
npm installCreate a .env file in the server directory:
PORT=8080
MONGO_URI=
JWT_SECRET=
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=cd client
npm installCreate a .env file in the client directory:
REACT_APP_API_BASE_URL=http://localhost:8080
# Terminal 1 - Start Backend
cd server
npm start
# Terminal 2 - Start Frontend
cd client
npm startThe application will be available at:
- Frontend:
http://localhost:3000 - Backend API:
http://localhost:8080
- Registration: Create a doctor account with professional details
- Profile Setup: Add specialization, hospital information, and set location on map
- Availability Management: Toggle availability status as needed
- Appointment Management: View, confirm, or cancel patient appointments
- Schedule Updates: Update consultation timings and availability
- Daily Updates: Respond to daily reminder notifications
- Search Doctors: Use the search functionality to find doctors by various criteria
- View Profiles: Access detailed doctor profiles and availability status
- Location Services: View doctor locations on interactive maps
- Book Appointments: Schedule appointments with available doctors
- Manage Appointments: View, reschedule, or cancel existing appointments
- Account Management: Create accounts for personalized experience
POST /api/auth/register # User/Doctor registration
POST /api/auth/login # User/Doctor login
POST /api/auth/logout # User logout
GET /api/auth/profile # Get user profile
GET /api/doctors # Get all doctors
GET /api/doctors/:id # Get specific doctor
POST /api/doctors # Create doctor profile
PUT /api/doctors/:id # Update doctor profile
PATCH /api/doctors/:id/availability # Toggle availability
GET /api/search/doctors?specialty=cardiology # Search by specialty
GET /api/search/doctors?location=mumbai # Search by location
GET /api/search/doctors?name=john # Search by name
GET /api/appointments # Get user's appointments
GET /api/appointments/doctor/:id # Get doctor's appointments
POST /api/appointments # Book new appointment
PUT /api/appointments/:id # Update appointment status
DELETE /api/appointments/:id # Cancel appointment
doctor-finder-platform/
βββ client/ # React frontend
β βββ public/
β βββ src/
β βββ components/ # Reusable components
β βββ pages/ # Page components
β βββ services/ # API services
β βββ store/ # Redux store
β βββ styles/ # CSS files
β βββ utils/ # Utility functions
βββ server/ # Node.js backend
β βββ controllers/ # Route controllers
β βββ middleware/ # Custom middleware
β βββ models/ # MongoDB models
β βββ routes/ # API routes
β βββ services/ # Business logic
β βββ utils/ # Utility functions
β βββ app.js # Express app setup
βββ docs/ # Documentation
βββ .gitignore
βββ README.md
βββ package.json
{
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
password: { type: String, required: true },
specialty: { type: String, required: true },
hospitalName: { type: String, required: true },
location: { type: String, required: true },
timings: { type: String, required: true },
mapLocation: String, // Google Maps link or coordinates
availability: { type: Boolean, default: false },
profileImage: { type: String, default: "" }, // Cloudinary URL
createdAt: Date,
updatedAt: Date
}{
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
password: { type: String, required: true },
profileImage: { type: String, default: "" },
phone: { type: String },
createdAt: Date,
updatedAt: Date
}{
doctor: { type: ObjectId, ref: "Doctor", required: true },
user: { type: ObjectId, ref: "User", required: true },
issue: { type: String, required: true },
appointmentDate: { type: Date, required: true },
status: {
type: String,
enum: ["Pending", "Confirmed", "Cancelled"],
default: "Pending"
},
cancelReason: { type: String, default: "" },
createdAt: Date,
updatedAt: Date
}- User and Doctor Authentication System
- Doctor Profile Management
- Real-time Availability Toggle
- Location-based Doctor Search
- Responsive Frontend Design
- Image Upload with Cloudinary Integration
- Basic Doctor Listing and Filtering
- Appointment Booking System (Currently Developing)
- Database Schema Design (Appointment Model)
- Frontend Appointment Booking Interface
- Backend API Endpoints for Appointments
- Appointment Status Management
- Email Notifications for Appointments
- Calendar Integration
- Real-time Chat between Patients and Doctors
- Payment Gateway Integration
- Advanced Search Filters
- Doctor Reviews and Ratings
- Appointment Reminder System
- Mobile App Development
- Multi-language Support
- Connect your GitHub repository to Render (Static)
- Set environment variables in Render dashboard
- Deploy with automatic builds on push
- Connect your GitHub repository to Render (Web)
- Set environment variables in Render dashboard
- Deploy with automatic builds on push
- Create a MongoDB Atlas cluster
- Configure network access and database users
- Update connection string in environment variables
Grace - Final Year Computer Science Student
- GitHub: @grasyPatel
- LinkedIn: @grace_patel
- Email: gracepatel91@gmail.com
β Star this repository if you found it helpful!
Built with β€οΈ for better healthcare accessibility