Docs/Room Tablet PWA Install
Setup

Room Tablet PWA Install

Install VetRx Ledger as an offline-capable Progressive Web App on iPad, Android, or Windows room tablets — no App Store, no MDM profile required.

Supported browsers

VetRx Ledger is a Progressive Web App (PWA) — it installs directly from the browser with no App Store listing required.

BrowserPlatformOffline supportRecommended
Chrome 90+Android, Windows, ChromeOSFull (Background Sync)✅ Yes
Edge 90+Windows, AndroidFull (Background Sync)✅ Yes
Safari 15+iOS / iPadOSPartial (manual sync tap)⚠️ Limited
Firefox 100+AndroidPartial⚠️ Limited
Safari on iOS: Apple limits Background Sync API on iOS. Events queued offline will sync automatically on next page focus, not immediately on reconnect. For full automatic sync, use Chrome on Android or Edge on a Windows tablet.

Step 1 — Open VetRx Ledger in Chrome

Navigate to https://grantshelf.com on the tablet browser. Sign in with the shared clinic account (see Shared tablet accounts below for the recommended account strategy).

Wait for the page to fully load — the service worker registers on first load and caches all required assets in the background. Look for the offline-ready indicator in the bottom-right corner (it shows ✓ once the cache is warm).

Step 2 — Install / Add to Home Screen

Trigger the install prompt using your browser's native mechanism:

  • Chrome (Android): Tap the ⋮ three-dot menu → Add to Home Screen. Alternatively, Chrome shows an install banner at the bottom — tap Install.
  • Edge (Windows / Android): Tap the ⋯ menu → Apps Install this site as an app.
  • Safari (iOS / iPadOS): Tap the Share icon (box with arrow) → Add to Home Screen → tap Add.
  • Chrome (Windows / ChromeOS): Click the install icon (⊕) in the browser address bar → Install.

After installing, the VetRx Ledger icon appears on the tablet home screen or app drawer. Tap it to launch in standalone mode (no browser chrome, full-screen UI).

Step 3 — Verify offline cache

  1. Enable Airplane Mode on the tablet.
  2. Open VetRx Ledger from the home screen icon (not the browser).
  3. The full app UI should load, displaying an orange "Offline" indicator badge at the top.
  4. Navigate to Ledger — the event form should be fully functional.
  5. Record a test DRAW event (any drug, any quantity). The event queues in IndexedDB; the OfflineStatus widget shows a pending count (e.g. 1 pending).
  6. Re-enable WiFi. Within seconds, the pending count drops to 0 and the event appears in the ledger — confirming Background Sync is working.
Delete the test event: After verifying, navigate to the event in the ledger and mark it as a REVERSAL, or note it clearly as a system test in the event notes field. The append-only ledger cannot delete events by design.

Step 4 — Kiosk mode (optional)

For dedicated room tablets that should never leave the VetRx Ledger app, enable single-app lock:

  • iOS / iPadOS — Guided Access: Go to Settings → Accessibility → Guided Access → enable it and set a passcode. Open VetRx Ledger, then triple-click the side button (or Home button) to activate. Staff can use the app but cannot switch apps or access Settings without the passcode.
  • Android — App Pin: Go to Settings → Security → App Pinning (exact path varies by OEM). Open VetRx Ledger, then tap Recent Apps and tap the pin icon on the VetRx card. The device is locked to that app until the PIN is entered.
  • Windows — Kiosk mode:Use Settings → Accounts → Family & other users → Set up a kiosk → assign Edge (with VetRx Ledger as the home page) to a dedicated account.

Shared tablet accounts

Most clinics operate shared room tablets rather than per-staff devices. The recommended account strategy:

  • Create one VetRx account per tablet, e.g. tablet-surgery@yourclinic.com.
  • Assign the tablet account the Tech role — it can submit events but cannot manage organisation settings or export DEA reports.
  • Individual DVM and technician IDs are entered per-event in the DVM ID and Tech ID fields — so the audit trail records who performed the action, not just which device.
  • Never share one account across multiple clinic sites — each site must have its own account so records stay separated by DEA registration location.

Offline event queue details

Events recorded offline are stored in the browser's IndexedDB store vetrx-queue. The OfflineStatus component (bottom-right of the app) shows:

  • Online — all events synced
  • 🟡 N pending — N events queued, awaiting sync
  • 🔴 Offline — no network; events are queuing safely

On Chrome/Edge Android, the Background Sync API syncs automatically when the network returns — even if the app is in the background or the screen is off. On iOS Safari, sync triggers on next page focus; tap Sync Now in the OfflineStatus widget for immediate sync.

Troubleshooting

SymptomLikely causeFix
Offline banner never disappears even with WiFiStale service workerHard-refresh (hold-reload on mobile) then re-add to home screen
Events not syncing on iOSBackground Sync unavailable (iOS)Tap Sync Now in the OfflineStatus widget
Camera / OCR not workingHTTPS required for camera APIConfirm URL is https:// (not http://)
Install banner not appearingAlready installed, or dismissedRemove app from home screen, clear browser data, re-navigate to site
App crashes on open in standalone modeOut-of-date cache after deploymentOpen in browser first (not the home screen icon), hard-refresh, then relaunch from icon

MDM deployment

If your clinic uses a Mobile Device Management (MDM) solution (Jamf, Intune, Mosyle, etc.), you can pre-configure the PWA without users needing to manually install it:

  • iOS / Jamf: Use a Web Clip configuration profile pointing to https://grantshelf.com with a custom icon. Set the display mode to Full Screen.
  • Android / Intune:Use Managed Chrome to push a managed bookmark or configure Chrome's Add site to apps policy via Chrome Enterprise.
  • Windows / Intune: Use the Edge management profile to set grantshelf.com as a pinned site.