A full-stack healthcare platform that connects patients with medical specialists using AI-powered matching, real government clinician data, and interactive medical visualization tools.
- Doctor Search & Discovery — Search 2.8M+ real clinicians from CMS government data by location, specialty, or symptoms
- AI-Powered Symptom Matching — Google Gemini AI analyzes symptoms and recommends appropriate medical specialties with confidence scoring
- Precision Consult Match — Calculates doctor-patient compatibility scores, predicts consultation fees, and supports appointment scheduling
- Interactive Map — View nearby doctors on an OpenStreetMap-powered map with distance and travel time calculations
- 3D Anatomy Viewer — Explore interactive 3D medical visualizations tied to specialties and conditions
- Clinical Nexus Academy — AI-driven medical education platform with condition explanations and specialist information
- AI Chat Assistant — Conversational medical guidance with patient info collection, image upload, and diagnostic suggestions
- User Accounts — Authentication, profile management, avatar uploads, and theme customization via Supabase
- Emergency Features — Emergency location sharing and contact alerts
| Layer | Technology |
|---|---|
| Frontend | React 18, Vite 5 |
| Backend | Node.js, Express 4 |
| Database | SQLite, CMS CSV (2.8M+ records via Git LFS) |
| AI / ML | Google Gemini 2.5 Flash |
| Authentication | Supabase |
| Maps | Leaflet, OpenStreetMap (no API key required) |
| 3D Graphics | Three.js, Google Model Viewer |
| Dev Tools | Nodemon, ESLint, Concurrently |
- Node.js (v18 or later recommended)
- npm
- Git LFS (the CMS clinician CSV is tracked with LFS)
git clone https://github.com/koushikvasa/mediconnect.git
cd mediconnectFrontend — create frontend/.env:
VITE_SUPABASE_URL=<your-supabase-url>
VITE_SUPABASE_ANON_KEY=<your-supabase-anon-key>
VITE_GEMINI_API_KEY=<your-gemini-api-key>Backend — create backend/.env:
GEMINI_API_KEY=<your-gemini-api-key>
PORT=3001# Backend
cd backend
npm install
# Frontend
cd ../frontend
npm installcd backend
npm run import-data # Import CMS CSV into SQLite
npm run generate-addresses # Generate addresses for doctors# Start the backend (port 3001)
cd backend
npm run dev
# In a separate terminal, start the frontend (port 5173)
cd frontend
npm run devOr run both together from the frontend directory:
cd frontend
npm run dev:with-backendOpen http://localhost:5173 in your browser.
mediconnect/
├── backend/
│ ├── controllers/ # Route handlers
│ ├── routes/ # API endpoint definitions
│ ├── services/ # Business logic (CSV processing, AI matching)
│ ├── scripts/ # Data import & address generation utilities
│ ├── data/ # SQLite DB & CMS CSV (Git LFS)
│ └── server.js # Express entry point
├── frontend/
│ ├── src/
│ │ ├── components/ # React components (map, 3D viewer, academy, etc.)
│ │ ├── services/ # API clients & AI service integrations
│ │ ├── hooks/ # Custom React hooks
│ │ ├── utils/ # Constants and helpers
│ │ ├── assets/ # Static images
│ │ ├── App.jsx # Main application component
│ │ └── main.jsx # React entry point
│ ├── server/
│ │ └── proxy-server.js # Dev proxy server
│ └── vite.config.js # Vite configuration
└── README.md
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/doctors/search |
Search doctors by location, specialty, symptoms |
| POST | /api/specialty/recommend |
AI-powered symptom-to-specialty recommendation |
| GET | /api/doctors/specialties |
List all available specialties |
| GET | /api/doctors/stats |
Database statistics |
| GET | /health |
Server health check |
GET /api/doctors/search?location=<city>&specialty=<spec>&symptoms=<symptoms>&age=<age>&limit=20
POST /api/specialty/recommend
{
"symptoms": "chest pain and shortness of breath",
"age": 45,
"gender": "male"
}| Script | Description |
|---|---|
npm start |
Start the server |
npm run dev |
Start with Nodemon (auto-reload) |
npm run import-data |
Import CMS CSV into SQLite |
npm run generate-addresses |
Generate doctor addresses |
| Script | Description |
|---|---|
npm run dev |
Start Vite dev server |
npm run build |
Production build |
npm run preview |
Preview production build |
npm run dev:with-backend |
Run frontend and backend together |
npm run lint |
Run ESLint |
This project is for educational and demonstration purposes.