License: MIT · Status: in development · PRs: welcome · GitHub cost: $0
MedMx Labs is a company building healthcare tools for India. MedScan is our product — medicine price comparison, prescription / lab OCR, reminders, and adherence tracking.
We're still in active development. APIs, UI, and scrapers can change without notice. Expect rough edges.
Web + Flutter app, Flask API. Hosted on Azure. MedMx Labs is backed by Microsoft for Startups — we use Azure credits from that program to run staging / production.
Org: github.com/MedMxLabs · Repo: MedMxLabs/MediScan
This is informational tooling only — not medical advice. See NOTICE.
Open source under the MIT License. Contributions welcome — start with CONTRIBUTING.md and the Code of Conduct. Security reports: SECURITY.md.
MedScan is a work in progress. Features land and get reworked as we figure out what sticks. Don't treat the live URLs as a finished product.
MedMx Labs is backed by Microsoft for Startups. That gets us Azure credits and cloud runway so we can run MedScan without eating the whole bill ourselves.
What we actually use:
- App Service — Flask API (Docker image with Playwright + Tesseract)
- Static Web Apps — React frontend
- ACR — container images
- PostgreSQL Flexible Server — main DB
- Optional: Redis, Document Intelligence, Azure OpenAI
Apply here if you're in the same boat: https://startups.microsoft.com
Cost / SKU notes and how long credits last are in docs/azure-deployment.md.
- Web: https://icy-pond-06a17d300.7.azurestaticapps.net
- API: https://medscan-api.azurewebsites.net
- Android APK: https://icy-pond-06a17d300.7.azurestaticapps.net/downloads/medmx-android.apk
- Search a medicine and compare prices across Indian online pharmacies (live scrape, not fake numbers)
- Upload a prescription (image/PDF) → OCR → pull out medicine names
- Upload a lab report → biomarker vs reference ranges
- Suggest Jan Aushadhi / generic alternatives when we can match the catalog
- Reminders + dose logging / adherence
- Dashboard, history, nearby pharmacies, simple FAQ chatbot
- Web (React) and mobile (Flutter)
- Auth via Supabase; API uses JWT after exchange
backend/ Flask API, scrapers, OCR, reminders
frontend/ React + Vite + Tailwind
mobile/ Flutter app (see mobile/README.md)
docs/ architecture, API, per-app guides, Azure, keys, Supabase
.github/ deploy workflows
| Bit | Stuff we use |
|---|---|
| API | Python 3.11, Flask, SQLAlchemy, Playwright, HTTPX |
| OCR | OpenCV, Tesseract, RapidOCR, PyMuPDF |
| Auth | Supabase + JWT |
| Web | React, Vite, Tailwind |
| Mobile | Flutter |
| Cloud | Azure App Service, SWA, ACR, Postgres |
You need Python 3.11+, Node 20+, Flutter if you're doing mobile, Tesseract on PATH, and Chromium for Playwright.
API
cd backend
python -m venv venv
# Windows: venv\Scripts\activate
pip install -r requirements.txt
python -m playwright install chromium
# copy .env.example → .env (see docs/API_KEYS.md)
python run.pyWeb
cd frontend
npm install
npm run devVite proxies /api to the backend.
Mobile
cd mobile
flutter pub get
flutter run --dart-define=API_BASE_URL=https://medscan-api.azurewebsites.netEmulator to local API: leave default (http://10.0.2.2:5000) or pass your machine IP.
Docker
docker compose up --buildSame stack we run with Microsoft for Startups credits.
cd backend
az acr build --registry acrmedscan --image medscan-api:latest --file Dockerfile .
cd ../frontend
npm run build
swa deploy ./dist --env productionWorkflows under .github/workflows/. Full walkthrough: docs/azure-deployment.md.
| Route | What |
|---|---|
GET /health |
alive? |
POST /api/auth/supabase |
Supabase token → our JWT |
GET /api/search-medicine |
price search (new medicine → 202, poll the job) |
GET /api/scrape-jobs/<id> |
is that scrape done yet? |
GET /api/compare |
search + ranking |
POST /api/upload-prescription |
OCR Rx |
POST /api/report-analysis |
lab report |
GET/POST /api/reminders |
reminders |
GET/POST /api/adherence |
doses |
POST /api/chatbot |
FAQ bot |
GET /api/dashboard |
dashboard |
GET /api/pharmacies/nearby |
nearby shops |
Protected routes need a Bearer token. Prod may also want X-Medscan-Api-Key on some calls.
Wiki (contributor map): MediScan/wiki — source pages in wiki/.
Start at docs/README.md. Quick picks:
docs/architecture.md— how the pieces fit, diagramsdocs/development.md— run it locally, common snagsdocs/api-reference.md— every routedocs/backend.md/frontend.md/mobile.md— per-app guidesdocs/azure-deployment.md— Azure + startup creditsdocs/COST.md— keep GitHub at $0docs/API_KEYS.md— env varsdocs/SUPABASE_AUTH.md— authdocs/changelog.md— what changedCONTRIBUTING.md— how to contributeSECURITY.md— vulnerability reportingCODE_OF_CONDUCT.md— community standardsLICENSE/NOTICE— MIT + medical / scraping disclaimer
MIT — see LICENSE. Third-party pharmacy sites and clinical use are your responsibility; see NOTICE.
Not medical advice. Don't use this instead of a doctor.
Scraping pharmacy sites can break their ToS / local rules — check before you run scrapers in production.