This project is a Practo-like healthcare management system that facilitates clinic and doctor management. It utilizes Spring Boot, MySQL, Elasticsearch, and React (migrating to Next.js) for seamless performance and efficient search functionality.
- Frontend: React (Next.js migration in progress), TailwindCSS, Material-UI
- Backend: Spring Boot (REST APIs)
- Database: MySQL (Relational Data Storage)
- Search Engine: Elasticsearch (Fast Searching)
✅ Clinic & Doctor Registration (SQL + Elasticsearch Sync)
✅ Search Functionality (Doctors, Clinics, Specialties)
✅ CRUD Operations (Clinics, Doctors)
✅ API Handling (Spring Boot REST APIs)
✅ Data Syncing (MySQL ↔ Elasticsearch)
✅ Search & Filtering (Elasticsearch-powered)
✅ Doctor & Clinic Profiles
✅ Navigation & State Management (React Router, Context/Redux)
✅ Forms Handling (React Hook Form)
CREATE TABLE clinics (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL UNIQUE,
address TEXT NOT NULL,
contact_number VARCHAR(20) NOT NULL UNIQUE,
email VARCHAR(255) NOT NULL UNIQUE,
website VARCHAR(255) NULL
);
CREATE TABLE doctors (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
speciality VARCHAR(255) NOT NULL,
registration_number VARCHAR(50) NOT NULL UNIQUE,
mobile_number VARCHAR(20) NOT NULL UNIQUE,
email VARCHAR(255) NOT NULL UNIQUE,
experience INT NULL,
qualification VARCHAR(255) NULL,
clinic_id BIGINT NOT NULL,
FOREIGN KEY (clinic_id) REFERENCES clinics(id) ON DELETE CASCADE
);{
"mappings": {
"properties": {
"id": { "type": "long" },
"name": { "type": "text" },
"speciality": { "type": "text" },
"mobileNumber": { "type": "text" },
"registrationNumber": { "type": "text" }
}
}
}- Create Clinic
POST /clinics{ "name": "HealthCare Clinic", "address": "123 Main St, NY", "contactNumber": "1234567890", "email": "contact@clinic.com", "website": "https://clinic.com" } - Get All Clinics
GET /clinics - Get Clinic by ID
GET /clinics/{id} - Update Clinic
PUT /clinics/{id} - Delete Clinic
DELETE /clinics/{id}
- Create Doctor
POST /doctors/{clinicId}{ "name": "Dr. John Doe", "speciality": "Cardiologist", "registrationNumber": "REG12345", "mobileNumber": "9876543210", "email": "dr.john@example.com", "experience": 10, "qualification": "MBBS, MD" } - Get All Doctors
GET /doctors - Get Doctor by ID
GET /doctors/{id} - Get Doctors by Clinic
GET /doctors/clinic/{clinicId} - Update Doctor
PUT /doctors/{id} - Delete Doctor
DELETE /doctors/{id}
- Search Doctors
GET /search/doctors?query={name_or_speciality} - Search Clinics
GET /search/clinics?query={name}
- Clone the repo:
git clone [your-repo-url]
- Navigate to the backend directory:
cd backend - Run the Spring Boot application:
mvn spring-boot:run
- Navigate to the frontend directory:
cd frontend - Install dependencies:
npm install
- Start the development server:
npm start