Skip to content
Safety & EmergencyAndroidiOSWeb (admin)

SOS App

Emergency SOS alerting with a role-based live-dispatch console

A Flutter emergency-SOS app that fires a live, location-tracked alert across six emergency categories — with a native call/SMS fallback alongside the in-app channel — paired with a role-based Flutter Web console for live monitoring, dispatch logging and chat, backed by a TypeScript Cloud Functions layer that routes push notifications by admin role.

SOS App — app screenshot
SOS App — app screenshot
SOS App — app screenshot

Both repositories are private. The dual-channel alert trigger, the live dispatch timeline and role-targeted notification routing are explained below.

About this project

The core interaction is one tap: pick an emergency category — Medical, Fire, Natural Disaster, Accident, Violence or Rescue — and the app writes a live Firestore alert, starts streaming the user's position with platform-tuned background location settings (a foreground service on Android, a background-location indicator on iOS), and, based on a contact preference the user sets in advance, places a real phone call or sends an SMS straight to the control room's line at the same moment — a fallback channel that keeps working even if the data connection lags.

On the other side, a role-based Flutter Web console (owner / admin / controller / viewer, enforced at the router level) gives operators a per-alert monitoring workspace: the alerting user's details, a live Google Map showing the trigger point plus a drawn path of their location history as it updates, real-time chat, and a combined timeline of admin notes and structured dispatch actions — ambulance, police, fire, rescue or security — each timestamped against the alert. A separate dashboard computes real stats (24-hour alert volume, active/resolved counts, average resolution and response time) directly from Firestore timestamps rather than showing static numbers.

The backend is more than Firestore listeners: a TypeScript Cloud Functions layer watches for new alerts and new chat messages and routes push notifications by role — every admin holding the controller role gets notified of a new alert, and a new message pushes to whichever side didn't just send it — plus a small REST API handling admin/user account provisioning (create, delete, password reset) outside the client apps entirely.

Key features

  • One-tap SOS across 6 emergency categories with continuous background location streaming
  • Dual-channel alerting: the Firestore alert fires alongside a native phone call or SMS to the control room, based on a user-set contact preference
  • In-app real-time chat with the control room, plus a standalone location check-in outside an active alert
  • Role-gated Flutter Web admin console (owner / admin / controller / viewer) with router-level access control
  • Per-alert monitoring workspace: live user info, a live map with the trigger point and a drawn path of location history, chat, and a combined notes + dispatch-action timeline
  • Structured dispatch-action logging per alert (ambulance, police, fire, rescue, security)
  • Dashboard stats — alert volume, active/resolved counts, average resolution and response time — computed live from real Firestore timestamps
  • Cloud Functions backend: role-targeted push notification routing for new alerts and chat messages, plus a REST API for account provisioning

From the blog

~/sherazi.dev$./say-hello

Say hello.

Questions about a case study, one of the packages, AI tooling or Flutter in general are always welcome.

// or browse the packages on pub.dev(opens in a new tab)