AI-powered telemedicine platform for remote healthcare consultations.
| Feature | Description |
|---|---|
| Symptom Checker | Chat with Google Gemini 1.5 Flash about your symptoms and get instant analysis |
| Hospital Finder | Search nearby hospitals by specialist type using Google Maps Places API |
| Appointment Booking | Select a date, time, specialist, and hospital — saved to your account |
| Health History | Review all past symptom conversations |
| Secure Auth | Signup and login with bcrypt-hashed passwords stored in SQLite |
- Python 3.12+
- uv —
winget install astral-sh.uv(Windows) orcurl -LsSf https://astral.sh/uv/install.sh | sh(macOS/Linux) - Google Gemini API key — free tier available
- Google Maps Platform API key — enable the Places API
git clone <repo-url>
cd CareReach
uv syncCopy .env.example to .env and fill in your API keys:
cp .env.example .env# Backend secret — only the Maps key is needed here
GOOGLE_MAPS_API_KEY=your_maps_api_key
# Optional — enables appointment confirmation emails:
SENDER_EMAIL=your_gmail@gmail.com
SENDER_PASSWORD=your_gmail_app_password
# Note: Gemini API key is NOT set here — each user enters their own in the app UI.uv run streamlit run app.pyOpen http://localhost:8501.
- Push this repo to GitHub
- Go to share.streamlit.io and connect your repo
- Set Main file path to
app.py - Under Advanced settings → Secrets, add:
GOOGLE_MAPS_API_KEY = "your_maps_api_key"- Click Deploy — done.
.
├── app.py # Streamlit entrypoint — routing and sidebar
├── src/
│ ├── auth.py # Login and signup UI
│ ├── db.py # SQLite helpers (users, history, appointments)
│ ├── hospital.py # Google Maps hospital search + optional email
│ └── pages/
│ ├── chatbot.py # Gemini 1.5 Flash symptom checker
│ ├── appointment.py # Hospital finder and booking
│ └── history.py # Health history viewer
├── .streamlit/
│ └── config.toml # Dark theme, monospace font
├── .env.example # Secrets template — copy to .env
├── pyproject.toml # uv project config and dependencies
└── uv.lock # Locked dependency tree
| Key | Required | Where to get it |
|---|---|---|
GOOGLE_MAPS_API_KEY |
Yes | Google Cloud Console → APIs & Services → Enable Places API → Credentials |
SENDER_EMAIL |
No | Your Gmail address |
SENDER_PASSWORD |
No | Gmail App Password — requires 2FA enabled |
Note on email: If
SENDER_EMAIL/SENDER_PASSWORDare not set, appointments are still saved to the database — the confirmation email is simply skipped.
| Key | Required | Where to get it |
|---|---|---|
| Gemini API Key | Yes, per user | Google AI Studio → Get API key (free tier available) |
Each user enters their own Gemini API key via the ⚙️ AI Settings panel in the sidebar after logging in. The app fetches their available models dynamically and lets them choose which one to use. The key lives only in their browser session and is never persisted.
- UI: Streamlit 1.58+
- AI: Google Gemini 1.5 Flash via
google-generativeai - Maps: Google Maps Places API via
googlemaps+geopy - Database: SQLite (local file
users.db) - Auth:
bcryptpassword hashing - Package manager: uv
Apache 2.0 — see LICENSE.