A modern, responsive web application for booking medical appointments with verified doctors. Built with React, TypeScript, and Tailwind CSS.
Healing Hands is a comprehensive healthcare appointment booking platform that connects patients with verified medical professionals. The application provides an intuitive interface for patients to search, filter, and book appointments with doctors across various specialties.
- Doctor Search & Discovery: Advanced search and filtering system
- Appointment Booking: Easy-to-use appointment scheduling
- Dashboard: Personal dashboard to manage appointments and profile
- Multiple View Modes: List and map view for doctor discovery
- Real-time Filtering: Filter by specialty, location, fees, rating, and experience
- Responsive Design: Works seamlessly on desktop, tablet, and mobile
- Professional Profiles: Comprehensive doctor profiles with verification badges
- Appointment Management: View and manage patient appointments
- Document Verification: Upload medical licenses and certificates for verification
- Clinic Location Management: Set and manage clinic address with Google Maps integration
- Availability Management: Set available time slots for appointments
- Dual Authentication: Separate login flows for patients and doctors
- Theme Support: Light (Green) and Dark theme options
- Verification System: Doctor verification with document upload
- Google Maps Integration: Location services and directions
- Real-time Updates: Dynamic filtering and search results
- Secure Authentication: Role-based access control
- Frontend Framework: React 18 with TypeScript
- Styling: Tailwind CSS with custom theme system
- Icons: Lucide React
- Build Tool: Vite
- Development: Hot Module Replacement (HMR)
- Code Quality: ESLint with TypeScript support
- Maps: Google Maps integration for clinic locations
Before running this project locally, make sure you have the following installed:
- Node.js (version 16.0 or higher)
- npm (comes with Node.js) or yarn
- A modern web browser (Chrome, Firefox, Safari, Edge)
git clone <repository-url>
cd healing-handsnpm installor if you prefer yarn:
yarn installnpm run devor with yarn:
yarn devThe application will automatically open in your default browser at:
http://localhost:5173
If it doesn't open automatically, manually navigate to the URL above.
src/
โโโ components/ # Reusable UI components
โ โโโ AdvancedDoctorFilter.tsx # Advanced filtering system
โ โโโ AppointmentModal.tsx # Appointment booking modal
โ โโโ AuthModal.tsx # Authentication modal
โ โโโ Dashboard.tsx # Main dashboard component
โ โโโ DoctorCard.tsx # Doctor profile card
โ โโโ DoctorLocationManager.tsx # Location management
โ โโโ DoctorSearch.tsx # Doctor search interface
โ โโโ DoctorVerification.tsx # Document verification
โ โโโ Header.tsx # Navigation header
โ โโโ Hero.tsx # Landing page hero section
โ โโโ MapSearch.tsx # Map-based doctor search
โ โโโ PatientDashboard.tsx # Patient-specific dashboard
โ โโโ SpecialtyFilter.tsx # Specialty filtering
โ โโโ ThemeToggle.tsx # Theme switching component
โโโ context/ # React Context providers
โ โโโ AuthContext.tsx # Authentication state management
โ โโโ ThemeContext.tsx # Theme state management
โโโ data/ # Mock data and constants
โ โโโ mockData.ts # Sample doctors, patients, appointments
โโโ types/ # TypeScript type definitions
โ โโโ index.ts # All interface definitions
โโโ App.tsx # Main application component
โโโ main.tsx # Application entry point
โโโ index.css # Global styles and theme variables
npm run dev- Start development server with hot reloadnpm run build- Build the project for productionnpm run preview- Preview the production build locallynpm run lint- Run ESLint to check code quality
The application supports two themes:
- Green Theme (default): Light theme with green accents
- Dark Theme: Dark theme with blue accents
Themes can be switched using the theme toggle in the header.
The project uses Vite for development and building. Configuration can be found in:
vite.config.ts- Vite configurationtailwind.config.js- Tailwind CSS configurationtsconfig.json- TypeScript configuration
- Role: Patient
- Features: Search doctors, book appointments, manage profile
- Demo Login: Use any email/password combination with "Patient" role selected
- Role: Doctor
- Features: Manage appointments, upload verification documents, set clinic location
- Demo Login: Use any email/password combination with "Doctor" role selected
-
Finding Doctors:
- Use the search bar to find doctors by name, specialty, or location
- Apply advanced filters for precise results
- Switch between list and map view
- Sort results by rating, fees, experience, or name
-
Booking Appointments:
- Click "Book Appointment" on any doctor card
- Select preferred date and time
- Describe symptoms or reason for visit
- Confirm appointment details
-
Managing Appointments:
- View all appointments in the dashboard
- Track appointment status (pending, confirmed, completed)
- Access appointment history
-
Profile Management:
- Complete professional profile with education and experience
- Upload profile photo and clinic information
- Set consultation fees and available time slots
-
Verification Process:
- Upload medical license and degree certificates
- Submit specialty certifications
- Track verification status
-
Location Management:
- Set clinic address with Google Maps integration
- Enable patients to get directions
- Update location information as needed
- Role-based Authentication: Separate access levels for patients and doctors
- Document Verification: Secure upload and verification of medical credentials
- Data Validation: Input validation and sanitization
- Secure Storage: Local storage for session management
The application is fully responsive and optimized for:
- Desktop: Full-featured experience with advanced filtering
- Tablet: Optimized layout with touch-friendly controls
- Mobile: Streamlined interface with essential features
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
-
Port Already in Use:
Error: Port 5173 is already in useSolution: Kill the process using the port or use a different port:
npm run dev -- --port 3000
-
Node Modules Issues:
rm -rf node_modules package-lock.json npm install
-
Build Errors:
npm run lint npm run build
- Check the browser console for error messages
- Ensure all dependencies are installed correctly
- Verify Node.js version compatibility
- Clear browser cache if experiencing display issues
- Real-time Chat: Patient-doctor communication
- Notification System: Email and SMS notifications
- Telemedicine: Video consultation capabilities
- Electronic Health Records: Patient health history management
- Multi-language Support: Internationalization
- Advanced Analytics: Reporting and insights dashboard