DEV Community

KunStudio
KunStudio

Posted on • Originally published at pethealthlog.pages.dev

I built a free offline PWA to stop missing my dog's medication doses

A few months ago I was helping care for a senior dog on a twice-daily heart medication. The vet was clear: consistency matters. What nobody tells you is how easy it is to lose track. One morning gets busy, you are not sure if the evening dose was given, and in a multi-person household everyone assumes someone else handled it. So I built a small web app to remove that uncertainty, and I want to share both the problem and the technical choices behind it.

The problem is bigger than "just remember"

I assumed missed doses were rare. They are not. Research suggests roughly half of pet owners miss medication doses at some point, and adherence varies a lot by condition. In studies of dogs on short-term antibiotics, 56% to 59% of owners gave the wrong number of doses per day, most often underdosing (Clinician's Brief). For chronic conditions the day-to-day burden is real: a social-media-listening study of dog owners found that the sense of a disrupted routine and a treatment that is "hard to follow" were among the strongest predictors of caregiver stress (Frontiers in Veterinary Science, 2025).

Two failure modes kept showing up in the research and in my own experience:

  1. No system. Without something that tracks what is due and when, medication becomes the thing you meant to do but never quite got to.
  2. Multi-caregiver confusion. Everyone assumes someone else gave the pill, so it gets skipped or double-dosed.

(This article is informational and is not veterinary advice. Always follow your veterinarian's dosing instructions and ask them what to do about a missed dose.)

What actually helps

I narrowed the app down to three behaviors that map directly to those failure modes:

Reminders that are dead simple to set. A schedule you can glance at answers the "did the evening dose happen?" question without a phone call to the other caregiver.

Catch-up reminders. Real life is not a cron job. If a reminder fires while you are driving or asleep, a single fixed alert is useless. The app keeps surfacing a pending dose so it does not silently vanish from your day. This one feature does the most to fight the "meant to, never got to" gap.

An adherence streak. Streaks are a cheap, honest motivator. Seeing a run of consistent days makes the routine feel less like a chore, which matters because perceived difficulty is one of the things that drives people to give up.

I also added a lightweight symptom log, because the useful question at the next vet visit is not just "did you give the meds" but "what changed." Jotting a one-line note next to a dose turns scattered memory into something you can actually show a vet.

Why offline, no-account, and free were non-negotiable

This is where the engineering choices become product choices.

Offline-first (PWA). Medication time should never depend on signal or a server being up. The app is a Progressive Web App: it installs to the home screen and the core flow works without a connection. Data lives in local storage on the device, so the reminder you set this morning is there tonight regardless of network.

No account. Asking someone to create an account before they can log their dog's pills is friction at exactly the wrong moment. It is also a privacy cost: there is no reason a med tracker needs your email to remind you about a pill. No sign-up means you are one tap from a working schedule, and your pet's health notes never leave your device.

Free and unlimited pets. Households with multiple animals are common, and a per-pet paywall punishes exactly the people who need tracking most. Unlimited pets, no charge.

A note on the build

The stack is intentionally boring: vanilla JavaScript, a service worker for offline caching, and localStorage for persistence. No framework, no backend, no analytics account required to function. Keeping it static means it deploys as flat files to a CDN, loads fast on an old phone, and has almost no attack surface because there is no server holding anyone's data. For a tool whose entire job is reliability, "fewer moving parts" is a feature.

If "no backend" sounds limiting, consider what a med reminder actually needs: a schedule, a way to mark a dose done, and durable local storage. None of that requires a database you have to operate.

Try it

If you are caring for a senior or chronic-illness pet, or you just want to stop the "did anyone give the pill?" debate, you can open it here, no install or sign-up required: free dog medication reminder app.

I would genuinely like feedback from people who have shipped offline-first PWAs. How do you handle reminder reliability when the OS can throttle background timers? That is the next hard problem I am chewing on.

Sources:


Top comments (0)