DoseGuard
- 9 Devlogs
- 32 Total hours
A medication scanner + interaction checker
A medication scanner + interaction checker
Last stretch was about making it real: hardening the app and getting it deployed where people can actually use it.
Deployed to a Hack Club box - FastAPI + Caddy under PM2, React build served static, the 250k-drug DB shipped up from local
This ate the day. Fresh Ubuntu was missing native libs (libGL, libgomp), then PaddlePaddle crashed on an unimplemented oneDNN op, then segfaulted - turned out the PP-OCRv5 server models just don’t run on this CPU. Swapped to the mobile models and it finally worked: scan a strip → reads the salts -> flags the interaction, ~2s.
Scan an “Aspirin + Clopidogrel” box and it correctly flags the interaction, end to end in the browser. Demo login + screenshots in the README.
This round was less about new features and more about making the existing loop trustworthy - multi-salt meds, an editable scan history, per-user timezones, and a pile of correctness bugs that were quietly skewing what people saw.
Multi-salt medicines
Editable scan history
Account + timezone
Where it stands
Fixing some bugs moving ahead
DoseGuard moved from a tiny hand-curated interaction list to a real, sourced drug-interaction database - plus a searchable medicine catalog and a calendar that shows adherence over time.
Real interaction data
Searchable medicine catalog
Medications page
Calendar
Where it stands
Fixing some bugs moving ahead
DoseGuard moved past “scan + check” into daily medication management schedule doses, track them, and see adherence alongside safety warnings.
Today page
Tracking + safety together
UI polish
Where it stands
The web app (React + HeroUI) — In progress
The hard part: reading the label (OCR)
This is where most of the recent effort went, and it’s been a real journey:
Where it stands
The full chain works end to end: scan a medicine -> read the salts -> check interactions -> see ranked warnings, with accounts, history, and a polished responsive UI.
Before this, the app could check drugs but it had no memory of who you were. So I added proper accounts.
Now the app has real users, remembers their medications, checks them safely, and protects their accounts to a standard I’d actually trust.
This is the part that actually makes DoseGuard useful - checking whether the medicines you’re on are dangerous together.
Up to now the app could recognise a drug and figure out its ingredient, but it couldn’t say anything about safety. So I built the interaction checker.
When you hand the app a list of medicines, it takes each one, boils it down to its real ingredient (using the part I built earlier), and then checks every possible pair against that database. If it finds a clash, it tells you which two drugs, how dangerous it is, and why.
I started the danger list small and curated by hand, just the well-known serious interactions, so I know it’s accurate.
Just finished the first real feature of DoseGuard - getting the app to actually understand drug names.
The problem is people don’t type or photograph drug names cleanly. They’ll write “tylenol” instead of the real medical name, or just misspell something like “warfarn.” So I built a piece that takes whatever messy text comes in and figures out what the drug actually is.
That ingredient bit matters, because two different-looking medicines can contain the same thing, and that’s where dangerous combinations come from.
I hooked this up to a free official US government drug db, so it’s working off real medical data
Started working on a this project. The idea is pretty simple: you take a photo of a medicine bottle, and the app reads the name off the label and warns you if it’s dangerous to take alongside the other medicines you’re already on. You can also just type the name in if you don’t want to use the camera.
So far I’ve got the foundation done. The project’s structured, the backend actually runs, there’s a basic health-check working, sorted out all the annoying Python environment and editor stuff. Next thing I’m doing is the part that recognises the drug name from the label.