← Work

Rx Manager

A medication manager built to run offline on an iPad and text its owner when a prescription is due to reorder. No app store, no servers to babysit, and it keeps working with the Wi-Fi off.

TypeCustom product
Year2026
RoleDesign & build, end to end
StackPWA · Tesseract.js · Supabase · Twilio
MEDICATION LIST
8 ACTIVE · 3 NEED ACTION
ACTION REQUIRED (3)
4OVERDUE
cetirizine (Zyrtec)
ORDER BY 17 AUG · 2 RF
18RENEW
ivabradine (Corlanor)
0 RF · PRESCRIBER ACTION
8ORDER
sacubitril-valsartan (Entresto)
ORDER BY 21 AUG · 1 RF
ACTIVE MEDICATIONS
carvedilol (Coreg)55DAYS
bupropion SR (Wellbutrin)65DAYS
The medication list: the action queue up top, days-on-hand at a glance, all offline.
Rx Managertext message
Rx Manager. Time to reorder: carvedilol (6d), ivabradine (renew). Refill: va.gov/​my-health/​medications/​refill
Text Message · now
The reminder that lands on your phone the day a refill is due.

The problem

Managing a real medication list means tracking quantities, refills, and lead times across a stack of bottles. The trick is reordering before you run out, with mail-order shipping factored in.

It needed to work on an older iPad, keep working with no internet, and reach the owner on their phone when something was due, without becoming one more app to check.

What we built

A single installable web app (PWA) that runs full-screen on the iPad, computes days-on-hand and order-by dates from its own supply math, and pushes a reminder to the owner’s phone the moment a medication crosses its reorder threshold.

  • Offline-first: a service worker caches the whole app so it launches and runs with zero network.
  • On-device OCR: point the camera at a prescription label and Tesseract.js reads it locally. Nothing leaves the device.
  • Automated reminders: a daily job recomputes what’s due and texts a refill link, with proper opt-in and STOP/HELP compliance.
  • Two-tap refills: supply, lead times, and renewals tracked per medication with a sortable, filterable list.

The hard parts

The interesting engineering wasn’t the UI. It was making it robust:

  • Ancient Safari: tuned everything to a specific older WebKit build, down to font metrics and the exact WASM the OCR engine loads.
  • Real telephony: a serverless reminder pipeline on Supabase Edge Functions + Twilio, including US A2P 10DLC registration and a hosted consent flow.
  • Own-your-stack infra: custom domain, branded email, HTTPS, and a private data store, all wired up and documented.
  • Trustworthy math: lead-time and run-out calculations verified against real-world pharmacy timing.

The result

A private, dependable tool the owner leans on every week. It lives on the iPad, works offline, and sends a refill link the day one comes due.

It’s a good example of how we work: get the constraints right, handle the details most people skip, and ship something that keeps working.

Build something like this →