390px · iPhone 15 viewport
Mobile-first. Nurses access this on their phone throughout the day.
Shows appointments for the current day, sorted by time. Completed jobs fade out. Future days aren't visible.
Navigate opens Apple Maps with the client's address pre-loaded. Uses lat/lng if available, falls back to address string.
Each card shows one action button based on current status. Tapping On My Way mints the tracker token and fires the "on the way" SMS with a live tracking link.
Nurses can only see and action their own appointments. API verifies nurseId = userId on every mutation.
Glow Studio
Sarah is on the way
Estimated arrival
~12 min
Public link — no login required
Sent via SMS when nurse taps "On My Way". Public URL — no login needed.
Shows the org's logo, name, and primary brand color. The "On the way" pill uses the org's configured color.
Nurse's phone posts GPS coordinates every 5 seconds via WebSocket. Marker moves smoothly with map.easeTo().
When nurse taps Arrived, a WebSocket broadcast replaces the map with a full-screen celebration state.
Your provider has arrived!
Each tracker link is a UUID token minted at "On My Way" time, expires after 4 hours. Only the nurse who holds the token can post positions.
Admin view — desktop
Day-view grid showing all nurses and their appointments side by side.
Each nurse gets a color-coded column. Admin can see all appointments across all nurses for any day.
Status badges update in real-time as nurses progress through their jobs (revalidated on each nurse action).
This screen was completed in Phase 2. Phase 3 added the status transitions that make the badges here meaningful.
Glow Studio
SMS
Today 9:47 AM
Hi Jennifer! Your Botox appointment with Glow Studio is confirmed for Thu, Apr 24 at 10:00 AM. We'll come to you — no need to travel! Reply STOP to opt out.
Today 9:00 AM (24hr reminder)
Hey Jennifer! Just a reminder that your appointment with Glow Studio is tomorrow, Thu Apr 24 at 10:00 AM. See you then! Reply STOP to opt out.
Today 8:00 AM (2hr reminder)
Hi Jennifer! Your Glow Studio appointment is in 2 hours at 10:00 AM. Our nurse will be on their way soon. Reply STOP to opt out.
Today 9:52 AM
Hi Jennifer! Sarah from Glow Studio is on the way to you. Track your provider live:
Track Sarah
app.glowstudio.com/track/abc123
Client's iPhone — Messages app
Automated via Twilio + BullMQ. All queued at booking time, fired on schedule.
Fires the moment Stripe webhook confirms payment. Queued via BullMQ with 0ms delay.
Queued with delay = scheduledAt − 24h − now. Skipped if appointment is under 24h away at booking time.
Same pattern. Only queued if delay > 0.
Fired immediately when nurse taps "On My Way". Includes the live /track/[token] URL.
Queue architecture
All SMS jobs go through BullMQ + Upstash Redis. 3 retry attempts with exponential backoff. Queue failures never block the booking or nurse flow — they're wrapped in try/catch and logged.