Medora is a modern and responsive healthcare platform built using Laravel (API) and React (frontend). It enables patients to easily find and book appointments with nearby doctors, offering a smooth and accessible user experience on all devices.
- User-friendly appointment booking - Easy to navigate interface for finding and scheduling medical appointments
- Doctor search and filtering - Find healthcare professionals by specialty, location, and availability
- Responsive design - Seamless experience across desktop, tablet, and mobile devices
- Secure authentication - Protected user accounts and medical information
- Real-time notifications - Appointment reminders and booking confirmations
- Admin dashboard - Comprehensive management system for healthcare providers
- Backend: Laravel 12.x (PHP 8.x)
- Frontend: React 19.x with modern JavaScript
- Database: MySQL
- Authentication: Laravel Sanctum
- Styling: Tailwind CSS
- API: RESTful API architecture
Before you begin, make sure you have the following installed:
- Node.js (v20 or higher)
- Composer
- https://git-scm.com/downloads
- PHP (v8.0 or higher)
- https://www.mysql.com/ or another database system
git clone https://github.com/7xmohamed/Medora.git
cd Medoracomposer updateSet up environment variables:
cp .env.example .envGenerate application key:
php artisan key:generateConfigure your database in the .env file:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=medora
DB_USERNAME=root
DB_PASSWORD=your_password
Run database migrations and seeders:
php artisan migrate --seedStart the Laravel development server:
php artisan serveThe API will be available at http://localhost:8000
Navigate to the frontend directory:
cd /frontendInstall Node.js dependencies:
npm installSet up environment variables:
cp .env.example .envConfigure your API URL in the .env file:
REACT_APP_API_URL=http://localhost:8000/api
Start the React development server:
npm startThe frontend will be available at http://localhost:3000
Medora/
βββ backend # Laravel-based backend application
β βββ app # Core application logic (controllers, models, etc.)
β βββ bootstrap # Bootstrapping scripts (e.g., app.php)
β βββ config # Configuration files for services and settings
β βββ database # Database-related files (migrations, seeders, factories)
β βββ public # Publicly accessible files (e.g., index.php, assets)
β βββ resources # Blade views, uncompiled assets (Sass, JS, etc.)
β βββ routes # API and web route definitions
β βββ storage # Generated files, logs, cached views, session data
β βββ tests # Unit and feature tests for backend logic
β βββ vendor # Composer dependencies (Laravel framework, third-party packages)
β
βββ frontend # React-based (or similar) frontend application
β βββ public # Static assets (images, icons, robots.txt, etc.)
β βββ src # Source code for the frontend
β βββ components # Reusable UI components
β βββ contexts # React Context API providers for state management
β βββ data # Mock data or static JSON/data files
β βββ layouts # Layout wrappers (e.g., headers, footers)
β βββ lib # Utility functions or libraries
β βββ pages # Page-level components (organized by role or section)
β βββ routes # Routing configuration for frontend navigation
β βββ services # API calls to communicate with the backend
β βββ styles # Global CSS/SCSS styling
β βββ utils # Helper functions and shared tools
β
βββ imgs # Miscellaneous images used for demos, documentation, or references
-
Patients
- Browse doctors and specialties
- Book and manage appointments
- View medical history
- Receive notifications
-
Doctors
- Manage schedule and availability
- View upcoming appointments
- Access patient medical records
-
Administrators
- Manage users and permissions
- View analytics and system usage
- Configure system settings
- Oversee all platform activities
-
CORS errors: Ensure your Laravel CORS configuration is set up properly in
config/cors.php:'paths' => ['api/*'], 'allowed_origins' => ['http://localhost:3000'],
-
Database connection issues: Verify your database credentials and ensure the database exists.
-
Node modules issues: If you encounter errors with Node modules, try:
rm -rf node_modules npm cache clean --force npm install
-
Composer dependency conflicts: Try:
composer update --ignore-platform-reqs
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/register |
Register a new user |
| POST | /api/login |
User login |
| POST | /api/logout |
User logout |
| GET | /api/user |
Get authenticated user |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/admin/dashboard |
Get dashboard statistics |
| GET | /api/admin/doctors |
Get all doctors |
| DELETE | /api/admin/doctors/{id} |
Delete a doctor |
| PATCH | /api/admin/doctors/{id}/verify |
Update doctor verification status |
| GET | /api/admin/users |
Get all users |
| GET | /api/admin/users/{id} |
Get user details |
| PUT | /api/admin/users/{id} |
Update user |
| DELETE | /api/admin/users/{id} |
Delete user |
| GET | /api/admin/monthly-users |
Get monthly user statistics |
| GET | /api/admin/reservation-stats |
Get reservation statistics |
| GET | /api/admin/contact-messages |
Get contact messages |
| DELETE | /api/admin/contact-messages/{id} |
Delete contact message |
| GET | /api/admin/doctor-specialties |
Get doctor specialties |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/doctor/dashboard |
Doctor dashboard stats |
| GET | /api/doctor/profile |
Get doctor profile |
| POST | /api/doctor/profile/update |
Update doctor profile |
| POST | /api/doctor/profile/picture |
Update profile picture |
| GET | /api/doctor/appointments |
Get all appointments |
| GET | /api/doctor/availabilities |
Get doctor availabilities |
| POST | /api/doctor/availabilities |
Create availability slot |
| DELETE | /api/doctor/availabilities/{id} |
Delete availability slot |
| POST | /api/doctor/prescription |
Upload prescription |
| DELETE | /api/doctor/prescription/{id} |
Delete prescription |
| POST | /api/doctor/doctor-report |
Upload doctor report |
| DELETE | /api/doctor/doctor-report/{id} |
Delete doctor report |
| POST | /api/doctor/analysis-request |
Upload analysis request |
| DELETE | /api/doctor/analysis-request/{id} |
Delete analysis request |
| GET | /api/doctor/getAppointments/{id} |
Get specific appointment |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/patient/profile |
Get patient profile |
| POST | /api/patient/profile/update |
Update patient profile |
| POST | /api/patient/profile/picture |
Update profile picture |
| GET | /api/patient/analytics |
Get patient analytics |
| POST | /api/patient/reservations |
Create reservation |
| GET | /api/patient/getpatientreservations |
Get patient reservations |
| GET | /api/patient/reservations/{id} |
Get reservation by ID |
| POST | /api/patient/cancelReservation/{id} |
Cancel reservation |
| GET | /api/patient/reservations/booked-slots/{id} |
Get booked slots for a doctor |
| POST | /api/patient/upload-lab-result |
Upload lab result |
| DELETE | /api/patient/delete-lab-result/{id} |
Delete lab result |
| GET | /api/patient/doctorsbyid/{id} |
Get doctor by ID |
| GET | /api/patient/getAppointments/{id} |
Get appointment details |
| GET | /api/patient/getDoctorReservations/{id} |
Get doctor reservations |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/doctors/public/{id} |
Get doctor public profile |
| GET | /api/doctors/nearby |
Get nearby doctors |
| GET | /api/doctors/location/{country}/{city} |
Get doctors by location |
| POST | /api/contact |
Send contact message |
| GET | /api/reservationreports/{id} |
Get reservation reports |
| POST | /api/list-lab-results |
List lab results |
| GET | /api/role |
Get user role |
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Commit your changes:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature-name - Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Mohamed β Core Development & Project Setup β 7xmohamed
- Anass β Development Support & Collaboration β AnassA7
For support, email [email protected] or open an issue on the GitHub repository.