Back to Building
ShippedAppTraining tools20262 weeks to build

Handover

A phone-first ward job list that hands the whole thing over in one scan. Add jobs by ward and bed as you go, then pass jobs and ward layouts to the next shift by QR code. Nothing retyped, nothing lost.

The ward job list usually lives on a folded sheet of paper that gets lost, rewritten at every handover, and can't remind you of anything. I wanted the list to carry itself to the next shift instead.

React 19ViteTailwind CSSCapacitorPWA

What it is

Handover is a phone-first shift job list for ward clinicians: chase these bloods, consent that patient, review a CTG at 10:00. It does what the folded sheet of paper does, but better, and it hands the list to the next person in a single scan.

You add jobs as you go, tagged to a ward and bed, marked routine or urgent, with timestamps and optional reminders. You can walk the ward bed by bed or see everything on one flat list. Mid-shift or at the end, you pick which jobs to pass on, generate a QR code or link, and whoever's taking over scans it, reviews each job, and merges what they want. Ward layouts can travel with the handover too, so the next person inherits the same bay and bed map. Nothing gets retyped.

What I built

Everything a job list needs to survive a shift and cross a handover, running entirely on the phone in your pocket.

  • Capture jobs by ward and bed in a couple of taps, marked routine or urgent, with clock and relative-age timestamps
  • Walk the ward bed by bed on a bed board, or view everything on one flat list
  • Configurable ward layouts: bays and beds as letters or numbers, side rooms, collapsible sections
  • Private bed notes that stay on your device, never go in the QR, and clear when you end the shift
  • Reminders with a due banner and notification centre: +30m, +1h, +2h, or a custom time, plus native OS notifications on iOS
  • Hand over by QR or shareable link: choose jobs, filter by ward, optionally keep a copy, and pass ward layouts with the jobs
  • Take over by scanning or pasting a link, with review, edit-before-merge, layout import, and bed remapping if layouts differ
  • Share ward setup alone (layouts, no jobs) so a colleague can import your bay map without taking over a shift
  • Mid-shift exchange sheet for hand over or take over without ending the shift
  • Swipe to delete with undo, dark mode, installable PWA, and fully offline
App screenshot 1
App screenshot 2
App screenshot 3
App screenshot 4
App screenshot 5
App screenshot 6
App screenshot 7

Why I built it

The ward job list is one of the most important documents in the hospital and one of the least designed. It lives on a folded sheet of paper that gets lost, rewritten from scratch at every handover, and can't remind you of anything. At the shift change it gets read out and copied down, which is exactly where jobs fall through.

I wanted the list to carry itself. Add a job once and have it follow to whoever's on next, without anyone retyping it at 8pm when everyone just wants to go home. The scan-to-hand-over was the whole point: the moment the list moves between people is the moment things get dropped, so I made that moment a single action.

Built privacy-first

There is no account, no cloud, no analytics, and no backend at all. The data lives on your device and never leaves it, except inside the handover code you choose to share.

That constraint shaped the app. Handover payloads are not encrypted, so the app steers you toward non-identifying clinical shorthand and toward showing the QR in person rather than sending the link in chat. Bed notes, reminders, done state, and your profile never go on the wire. Privacy isn't a setting bolted on the side; it's the reason there's no server to begin with.

Stack

React 19, Vite, and Tailwind CSS, built as an installable PWA with offline service-worker caching. Capacitor wraps the same codebase for iOS, with native camera QR scanning and local notifications. There is no server and no database. It is client-only by design.

Being backend-free is the feature, not a shortcut. It's what makes the privacy promise real, keeps the app fast and installable, and means it works in the parts of the hospital where the WiFi doesn't.