DEV Community

KunStudio
KunStudio

Posted on • Originally published at pethealthlog.pages.dev

Why I built a free, offline pet weight tracker (no account, kg/lb, runs on your phone)

A 0.3 kg drop in a cat looks like nothing on a sticky note. Spread across three months, it can be the first measurable sign that something is wrong — long before appetite or behavior visibly changes. The problem is that most of us record weight as scattered numbers and never see the line they form.

That gap is why I built PetHealthLog: a free, offline pet weight tracker that turns each weigh-in into a trend chart instantly.

Why weight trends matter more than single numbers

Vets care about the slope, not the snapshot. In feline medicine, a sudden loss of more than 5% of body weight, or a gradual loss exceeding 10%, is treated as a red flag worth investigating — and unintentional weight loss often precedes other visible signs of disease. Cats in particular are good at masking illness, so a quiet downward line on a chart is sometimes the earliest clue an owner ever gets.

The catch: 10% of a 4 kg cat is 400 grams. You will not feel that by picking your pet up. You only catch it if you have last month's number sitting right next to this month's — on the same chart, same units, same axis. That is exactly the moment a record-keeping tool earns its place.

To be clear, this is a logging tool, not a diagnosis. It does not replace your veterinarian — any unexplained change is a reason to call one. What it does is make the change visible so you can bring real history to the appointment.

Why offline, no-account, and free actually help here

These three constraints are usually framed as "features," but for pet health logging they solve concrete problems:

  • Offline — You weigh a pet in a bathroom, a garage, a vet's waiting room. Connectivity is often poor exactly where you log. An offline-first app records the entry regardless and never loses it to a dropped request.
  • No account — Health logging dies on friction. If the first screen demands a signup, most people close the tab and go back to sticky notes. Removing the account removes the single biggest reason a tracking habit never starts.
  • Free + local data — There is no server holding your pet's records hostage behind a subscription, and nothing to leak. Data lives on your device; you can export a backup anytime.

The honest engineering angle

The whole thing is a PWA — one offline-capable web app, no native install required.

State is persisted locally in the browser, so there is no backend to run and no database bill. That is a deliberate trade-off: I give up cross-device sync to gain zero-friction onboarding and genuine privacy. For a tool people open for ten seconds a week, that trade is correct. An account-and-cloud version would be "better" on a feature checklist and worse at the only job that matters — getting logged at all.

A few details that took more care than expected:

  • Unit switching (kg/lb) retroactively converts every past entry so the chart never mixes scales. Storing one canonical unit internally and converting at render time avoids a class of off-by-conversion bugs.
  • Multi-pet profiles keep a Labrador and a kitten from polluting one trend line — separate series, separate baselines.
  • Optional symptom and appetite notes (a simple 1–5 severity scale) attach context to a data point, so a dip on the chart can carry "ate less this week" alongside it.
  • PDF export turns the history into something you can hand a vet, instead of scrolling a phone in the exam room.

None of this is novel computer science. It is the unglamorous work of removing every reason a worried owner might not record the number — which is the actual product.

Try it

If you have a senior pet, a recovering one, or a puppy you are watching grow, the trend line is worth starting today. It is free, works offline, and needs no account: PetHealthLog weight tracker.

This article and the app are informational record-keeping tools and are not veterinary advice. For any health concern, consult your veterinarian.


SNS posts

Top comments (0)