Healthline is a full-stack telemedicine application designed to bridge the gap in rural healthcare. It features role-based access for doctors and patients, an AI-powered symptom checker, digital health records via QR codes, and integrated video consultations.
Built with React Native (Expo) and Node.js.
- 🔐 Role-Based Authentication:
- Secure Login/Signup for Doctors and Patients.
- Doctors can access all patient records; Patients can only access their own history.
- 🤖 AI Symptom Checker:
- Integrated with Google Gemini 2.5 Flash.
- Smart chat interface for preliminary symptom triage.
- 📱 Digital Health Records:
- Generates instant QR Codes for patient data for easy sharing.
- 📹 Video Telemedicine:
- Integrated video calling using VideoSDK (Requires Development Build).
- 🛡️ Secure Backend:
- SQLite database with encrypted passwords (bcrypt).
- REST API with role-based data filtering.
- Frontend: React Native, Expo Router, TypeScript
- Backend: Node.js, Express.js, SQLite
- AI: Google Gemini API (
@google/generative-ai) - Video: VideoSDK (
@videosdk.live/react-native-sdk)
Follow these instructions to set up the project locally.
The backend manages the database, authentication, and AI connection.
- Navigate to the backend folder:
cd backend - Install dependencies:
npm install
- Configure Environment Variables:
Create a file named
.envin thebackendfolder and add your Gemini API Key:GEMINI_API_KEY=Your_Google_Gemini_Key_Here
- Start the Server:
You should see:
node server.js
🚀 Server running on http://localhost:5000
The frontend is the mobile application.
-
Navigate to the project root (where
appfolder is):cd .. # or cd frontend/frontend depending on your structure
-
Install dependencies:
npm install
-
Configure IP Address: You must update the
API_URLin the following files to match your computer's Local IP Address (find it usingipconfigorifconfig):app/(auth)/login.tsxapp/(auth)/register.tsxapp/(app)/dashboard.tsxapp/(app)/ai_chat.tsx
Example:
const API_URL = "[http://192.168.1.5:5000](http://192.168.1.5:5000)"; // Use your actual IP, not localhost!
-
Start the App:
npx expo start -c
-
Scan the QR code with the Expo Go app on your phone (Android/iOS).
If you see "Network Request Failed" or "Unreachable" on your phone:
- Check Wi-Fi: Ensure your phone and computer are on the exact same Wi-Fi network.
- Windows Firewall:
- You may need to create an Inbound Rule in Windows Firewall to allow traffic on Port
5000. - Alternatively, ensure your Network Profile is set to Private, not Public.
- You may need to create an Inbound Rule in Windows Firewall to allow traffic on Port
- Server Address:
- The server must listen on
0.0.0.0, NOTlocalhost. - Note: The provided
server.jsis already configured correctly for this.
- The server must listen on
The Video Calling feature uses native WebRTC modules. It will not work in the standard Expo Go client.
To test video calling, you must create a Development Build:
npx expo run:android
# OR
eas build --profile development --platform android