TerraGuard: use cases and tests

Version 2.8.2 · persona test run 2026-10-05 12:05 UTC · Headless Chrome at phone size (360×640), local TerraGuard server with throw-away data

Try any feature yourself: in the app, Tools → Try it. Each feature has its use cases, step-by-step instructions and a “Try it” button. SOS, countdowns, the snatch check and walk or ride alerts run in practice mode: everything works on your phone, but nothing is sent to anyone.
TestResultWhen
Persona test (every persona, every feature they use, in the app)136 of 136✅ all passed2026-10-05 12:05 UTC
Android emulator test (app 2.8.2)31 of 31✅ all passed2026-10-05 11:37 UTC
Web app unit tests218 of 218✅ all passed2026-10-05 12:16 UTC
Server tests74 of 74✅ all passed2026-10-05 12:16 UTC
Android unit tests71 of 71✅ all passed2026-10-05 12:16 UTC

✅ passed · ❌ failed · 🔧 covered by the Android emulator, unit or server tests (the feature needs the Android app or a second phone) · · not this persona's feature

Personas

🌙 Travels or walks alone

Asha, 26, works late in Bengaluru and takes cabs and autos home.

Walks to the metro after dark, takes a cab or an auto home, sometimes to new places. Wants help to come fast if a ride goes wrong, without fuss when nothing is wrong.

38 features · 28 passed in the app · 10 covered by Android, unit or server tests

👪 Looks after children

Rahul, 38, two children, one with a first phone.

School runs, crowded fairs and stations, a child walking home alone. Wants to know they arrived, and an alarm the moment they get separated in a crowd.

27 features · 24 passed in the app · 3 covered by Android, unit or server tests

🧓 Older or lives alone

Kamala, 72, lives alone; her son is in another city.

Worried about falls, a day when nobody notices she is unwell, and scam calls. Some of her friends only have a basic phone.

27 features · 21 passed in the app · 6 covered by Android, unit or server tests

🤝 Cares for an older parent

Vikram, 45, looks after his mother Kamala from Pune.

Wants to know his mother is fine without calling every hour, to be told quickly if she falls or texts HELP, and to check calls that sound like him.

22 features · 19 passed in the app · 3 covered by Android, unit or server tests

🥾 Treks or goes off-grid

Meera, 31, treks in the Himalayas with friends.

Long stretches with no signal, weather that turns, altitude. Wants an SOS that gets out without signal and people who know when she is overdue.

27 features · 22 passed in the app · 5 covered by Android, unit or server tests

🦺 Works alone or at night

Priya, 29, night shift at a BPO; her company runs the safety desk.

Shift check-ins, the cab home after midnight, a security desk that must know she got home (night-shift rules), and records for audits.

30 features · 22 passed in the app · 8 covered by Android, unit or server tests

Every feature × every persona

Feature🌙
Travels or walks alone
👪
Looks after children
🧓
Older or lives alone
🤝
Cares for an older parent
🥾
Treks or goes off-grid
🦺
Works alone or at night
SOS
Hold for SOS✅✅✅✅✅✅
What happened to my SOS✅·✅···
Silent SOS✅·✅··✅
Cancel a mistaken SOS✅✅✅✅✅✅
Call or text 112 with exact location✅✅✅✅✅✅
Power button ×3 SOS Android🔧·🔧··🔧
Bluetooth SOS button Android🔧·🔧···
Widget and quick-settings tile Android🔧🔧🔧🔧🔧🔧
Symbols and Speak·✅✅·✅·
Speak for me (27 languages)✅···✅·
Where am I✅···✅·
Vitals and CPR coach·✅✅✅··
Black box recording🔧····🔧
Photos in an SOS✅····✅
Phone snatch alert Android🔧····🔧
Phone stolen? guide and IMEI✅····✅
Exact location for this emergency (Android 17) Android🔧🔧🔧🔧🔧🔧
Getting there safely
Walk me home✅✅····
Ride check and vehicle number✅✅···✅
Hold until safe✅·····
“I felt unsafe here” and night routes✅✅···✅
Share a ride to TerraGuard✅····✅
Hike / trip with overdue alert····✅✅
Fake incoming call✅····✅
Family
Family circle (encrypted)✅✅✅✅··
Check-ins, roll call, “Is everyone safe?”·✅✅✅··
Basic phones (no smartphone)··✅✅··
Ask family for a recharge✅✅✅✅··
Scam check and “Is it really them?”··✅✅··
Daily rhythm··✅✅··
Crowd leash Android·✅····
Lost-person tags (QR / NFC)·✅✅✅··
Disaster check and official warnings·✅·✅✅·
No signal
Bluetooth SOS relay network Android✅···✅✅
No-signal messages Android····✅✅
SMS fallback, satellite-ready text, last gasp Android🔧···🔧·
LoRa radio (Meshtastic) Android····🔧·
Around you
Danger detection✅✅✅✅✅✅
Area alerts✅✅···✅
Nearby help✅✅✅✅✅✅
Hazard map and offline maps✅···✅·
Local groups✅✅··✅·
Trained volunteers nearby🔧····🔧
Help and information
Ask TerraGuard (offline AI)✅·✅·✅·
First aid triage·✅✅✅✅·
Weather, water & cold, altitude····✅·
Signal for help, find a light····✅·
Work and groups
Lone-worker shifts·····✅
Night safety: ride home to the security desk·····✅
Crowd mode for events·✅···✅
Privacy and settings
Privacy & your rights (DPDP)✅✅✅✅✅✅
Try it: every feature, with practice mode✅✅✅✅✅✅
Night mode✅···✅·
Tablets and foldable phones·✅·✅··
Guided setup by persona✅✅✅✅✅✅
Background protection (fall, crash, Live Updates) Android🔧·🔧··🔧
Security of the app and server🔧🔧🔧🔧🔧🔧

SOS

Hold for SOS Web and Android

Press and hold 1.5 s: the SOS goes to the server (contacts by SMS and push, live status page), by SMS from the phone, to family, by Bluetooth beacon and LoRa where available. The screen shows which channels actually worked.

Use cases: Being followed on the way home · A medical emergency at home · An accident on the road

For: 🌙 Travels or walks alone, 👪 Looks after children, 🧓 Older or lives alone, 🤝 Cares for an older parent, 🥾 Treks or goes off-grid, 🦺 Works alone or at night

How to do it try it in practice mode

  1. On Home, check “Your SOS goes to” above the red button.
  2. Press and hold “Hold for SOS” for a moment.
  3. A full-screen countdown gives you 5 seconds to cancel (or “Send now”).
  4. The SOS screen shows what happened so far: who was texted, whether your live map was opened. Slide “I’m safe” to end it.
How it's tested
  • ✅ Travels or walks alone (persona test): SOS reached the server; cancelled as an accident (server: CANCELLED)
  • ✅ Looks after children (persona test): SOS reached the server; cancelled as an accident (server: CANCELLED)
  • ✅ Older or lives alone (persona test): SOS reached the server; cancelled as an accident (server: CANCELLED)
  • ✅ Cares for an older parent (persona test): SOS reached the server; cancelled as an accident (server: CANCELLED)
  • ✅ Treks or goes off-grid (persona test): SOS reached the server; cancelled as an accident (server: CANCELLED)
  • ✅ Works alone or at night (persona test): SOS reached the server; cancelled as an accident (server: CANCELLED)
  • 🧪 Unit tests: sos.test.ts
  • 🖥️ Server tests: api.test.js: SOS alerts contacts once, is idempotent, and reports delivery honestly

What happened to my SOS Web and Android

The SOS screen leads with the one thing that matters most and lists, in order, what really happened: who was texted, whether the server reached anyone, whether someone opened your live map (each viewer counted once; chat-app link previews don’t count), volunteers on the way. Then the four most useful things to do now: call 112, a loud alarm, speak for me, photos.

Use cases: Knowing someone has seen your SOS · Deciding whether to call 112 as well · Telling helpers what you look like

For: 🌙 Travels or walks alone, 🧓 Older or lives alone

How to do it try it in practice mode

  1. Send an SOS (in practice mode, or for real).
  2. The red top of the SOS screen says what happened so far: who was texted, whether the server reached anyone, “Someone opened your live map”, volunteers on the way.
  3. Below: Call 112, Loud alarm, Speak for me and Take photos, and “Add a note for helpers” for what you look like.
How it's tested
  • ✅ Travels or walks alone (persona test): SOS screen led with what happened; once the live page was opened in a browser it said “Someone opened your live map”; slid “I’m safe”
  • ✅ Older or lives alone (persona test): SOS screen led with what happened; once the live page was opened in a browser it said “Someone opened your live map”; slid “I’m safe”
  • 🧪 Unit tests: homeAndTrips.test.ts: SOS timeline
  • 🖥️ Server tests: api.test.js: SOS alerts contacts once… live map opened

Silent SOS Web and Android

Next to the SOS button: hold “Silent SOS” for a moment. Nothing changes on screen and nothing makes a sound; your contacts get “I may be under threat and can’t talk. Don’t call me. Call police.” with your location, and the server’s live page.

Use cases: Being followed, can’t make a call · Someone is watching your screen · Domestic violence

For: 🌙 Travels or walks alone, 🦺 Works alone or at night, 🧓 Older or lives alone

How to do it try it in practice mode

  1. On Home, press and hold “Silent SOS” (next to Call 112) for a moment.
  2. Nothing changes on screen; it says “Sent quietly” for a few seconds.
  3. Your contacts get a silent alert with your location: you can’t talk, don’t call, call the police.
How it's tested
  • ✅ Travels or walks alone (persona test): held Silent SOS: the server got a silent (duress) alert; nothing changed on screen but “Sent quietly”
  • ✅ Works alone or at night (persona test): held Silent SOS: the server got a silent (duress) alert; nothing changed on screen but “Sent quietly”
  • ✅ Older or lives alone (persona test): held Silent SOS: the server got a silent (duress) alert; nothing changed on screen but “Sent quietly”
  • 🧪 Unit tests: sos.test.ts: silent duress alert
  • 🖥️ Server tests: api.test.js: duress check-in … silently alerts contacts

Cancel a mistaken SOS Web and Android

Slide “I’m safe” → "It was an accident": everyone alerted is told you are safe, by SMS and on the status page. With a duress PIN set, typing it looks like a cancel but keeps the alert going and silently tells your contacts you are under threat.

Use cases: SOS pressed by a child · Pocket press · Situation resolved

For: 🌙 Travels or walks alone, 👪 Looks after children, 🧓 Older or lives alone, 🤝 Cares for an older parent, 🥾 Treks or goes off-grid, 🦺 Works alone or at night

How to do it try it in practice mode

  1. During an SOS, slide “I’m safe” at the bottom of the screen.
  2. Say why (for example “It was an accident”). With a duress PIN set, type your PIN: the duress PIN looks like a cancel but keeps the alert going.
  3. Everyone who was alerted is told you are safe, by SMS and on the live page.
How it's tested
  • ✅ Travels or walks alone (persona test): covered in the SOS step (cancelled as an accident)
  • ✅ Looks after children (persona test): covered in the SOS step (cancelled as an accident)
  • ✅ Older or lives alone (persona test): covered in the SOS step (cancelled as an accident)
  • ✅ Cares for an older parent (persona test): covered in the SOS step (cancelled as an accident)
  • ✅ Treks or goes off-grid (persona test): covered in the SOS step (cancelled as an accident)
  • ✅ Works alone or at night (persona test): covered in the SOS step (cancelled as an accident)
  • 🧪 Unit tests: sos.test.ts
  • 🖥️ Server tests: api.test.js: SOS alerts contacts once…

Call or text 112 with exact location Web and Android

"Call 112" opens the dialler and "Text 112 with my exact location" opens the messaging app, so Android’s Emergency Location Service adds the precise position for the control room.

Use cases: Can’t speak: text the police · Calling 112 from an unknown place

For: 🌙 Travels or walks alone, 👪 Looks after children, 🧓 Older or lives alone, 🤝 Cares for an older parent, 🥾 Treks or goes off-grid, 🦺 Works alone or at night

How to do it try it in practice mode

  1. On Home, tap “Call 112” next to the red button to open the phone’s dialler.
  2. Or tap “Text 112 with my exact location”: your messaging app opens with the message written; you press Send.
  3. Android adds its own exact location for the control room to calls and texts from its own apps.
How it's tested
  • ✅ Travels or walks alone (persona test): "Call 112" and "Text 112 with my exact location" shown (India)
  • ✅ Looks after children (persona test): "Call 112" and "Text 112 with my exact location" shown (India)
  • ✅ Older or lives alone (persona test): "Call 112" and "Text 112 with my exact location" shown (India)
  • ✅ Cares for an older parent (persona test): "Call 112" and "Text 112 with my exact location" shown (India)
  • ✅ Treks or goes off-grid (persona test): "Call 112" and "Text 112 with my exact location" shown (India)
  • ✅ Works alone or at night (persona test): "Call 112" and "Text 112 with my exact location" shown (India)
  • 🧪 Unit tests: roadmapNow.test.ts: India takes SMS on 112

Power button ×3 SOS Android app

Press the power button 3 times (screen off, phone in a pocket): a 10-second full-screen countdown with a big Cancel, then the SOS.

Use cases: Attacked, can’t take the phone out · Kidnapping or harassment in a cab

For: 🌙 Travels or walks alone, 🦺 Works alone or at night, 🧓 Older or lives alone

How to do it try it in practice mode

  1. Me & settings → How SOS starts → “Power button SOS”: switch it on.
  2. Press the power button 3 times, about half a second apart (the screen can be off, the phone in a pocket).
  3. A 10-second countdown fills the screen. Tap “Cancel – I’m OK”, or let it run out.
  4. In practice mode you then see “Practice: an SOS would be sent now”.
How it's tested
  • 🔧 Travels or walks alone (persona test): Android app: emulator test and unit tests
  • 🔧 Works alone or at night (persona test): Android app: emulator test and unit tests
  • 🔧 Older or lives alone (persona test): Android app: emulator test and unit tests
  • 🧪 Unit tests: PowerPressesTest.java
  • ✅ 📱 Android emulator: power button: 3 presses open the full-screen countdown, its Cancel stops it
  • ✅ 📱 Android emulator: power button: the notification's Cancel stops it too
  • ✅ 📱 Android emulator: power button: checking the time does not start a countdown

Bluetooth SOS button Android app

A cheap Bluetooth tag on a keyring: press it twice for the same 10-second countdown and SOS.

Use cases: Older person who can’t use a touch screen in a hurry · Jogging without the phone in hand

For: 🧓 Older or lives alone, 🌙 Travels or walks alone

How to do it try it in practice mode

  1. Me & settings → How SOS starts → “Bluetooth SOS button” → Scan, and pick your tag (a cheap Bluetooth key finder).
  2. Press the tag’s button twice.
  3. The same 10-second countdown starts; Cancel stops it.
How it's tested
  • 🔧 Older or lives alone (persona test): Android app: emulator test and unit tests
  • 🔧 Travels or walks alone (persona test): Android app: emulator test and unit tests
  • 🧪 Unit tests: BleButtonTest.java
  • ✅ 📱 Android emulator: Bluetooth SOS button status
  • ✅ 📱 Android emulator: Bluetooth SOS button scan (3 s)

Widget and quick-settings tile Android app

SOS from the home screen or the lock screen tile, with the same countdown screen.

Use cases: SOS without unlocking the phone

For: 🌙 Travels or walks alone, 👪 Looks after children, 🧓 Older or lives alone, 🤝 Cares for an older parent, 🥾 Treks or goes off-grid, 🦺 Works alone or at night

How to do it try it in practice mode

  1. Long-press your home screen → Widgets → TerraGuard, and place the SOS widget. On Android 16 and 17 you can put it on the lock screen too.
  2. Or pull down quick settings → edit (pencil) → add the “TerraGuard SOS” tile, or long-press the app icon for SOS, walk home, fake call and share location.
  3. Tap SOS: a 10-second countdown with a big Cancel, then the SOS.
How it's tested
  • 🔧 Travels or walks alone (persona test): Android app: emulator test and unit tests
  • 🔧 Looks after children (persona test): Android app: emulator test and unit tests
  • 🔧 Older or lives alone (persona test): Android app: emulator test and unit tests
  • 🔧 Cares for an older parent (persona test): Android app: emulator test and unit tests
  • 🔧 Treks or goes off-grid (persona test): Android app: emulator test and unit tests
  • 🔧 Works alone or at night (persona test): Android app: emulator test and unit tests

Symbols and Speak Web and Android

Tap pictures or say what happened; the SOS carries the situation (injured, trapped, fire…).

Use cases: Can’t type in shock · Doesn’t read English

For: 🧓 Older or lives alone, 🥾 Treks or goes off-grid, 👪 Looks after children

How to do it

  1. On Home, tap “Pick symbols” under the urgency buttons (or Tools → Symbols).
  2. Tap the pictures that fit (injured, can’t breathe, being followed…). They set how urgent the SOS is and go into it.
  3. Or tap “Say it” and say what happened; the phone picks out what matters.
How it's tested
  • ✅ Older or lives alone (persona test): Symbols opens
  • ✅ Treks or goes off-grid (persona test): Symbols opens
  • ✅ Looks after children (persona test): Symbols opens
  • 🧪 Unit tests: situationModel.test.ts

Speak for me (27 languages) Web and Android

Emergency phrases read out in the local language, offline, and a translator.

Use cases: Travelling in another state · Asking a bystander for help

For: 🌙 Travels or walks alone, 🥾 Treks or goes off-grid

How to do it

  1. Tools → Speak for me (also on the SOS screen).
  2. Pick an emergency phrase, or type your own.
  3. It is shown big and spoken in the other person’s language (27 languages, works offline).
How it's tested
  • ✅ Travels or walks alone (persona test): Speak for me opens
  • ✅ Treks or goes off-grid (persona test): Speak for me opens
  • 🧪 Unit tests: utils.test.ts

Where am I Web and Android

Photo of a sign → position description; plus the position as coordinates and plus code to read out.

Use cases: Lost in a new city · Describing location to 112

For: 🌙 Travels or walks alone, 🥾 Treks or goes off-grid

How to do it

  1. Tools → Where am I.
  2. Take a photo of a street sign, shop board or milestone.
  3. You get your position, the address and a short description to read out to a helper or 112.
How it's tested
  • ✅ Travels or walks alone (persona test): Where am I? opens
  • ✅ Treks or goes off-grid (persona test): Where am I? opens
  • 🧪 Unit tests: aiFeatures.test.ts

Vitals and CPR coach Web and Android

Pulse from a fingertip on the camera, breathing rate, a watch’s heart rate (Health Connect), CPR rhythm.

Use cases: Someone collapsed · Elderly parent feels unwell

For: 🧓 Older or lives alone, 🤝 Cares for an older parent, 👪 Looks after children

How to do it

  1. Tools → Vitals (also on the SOS screen).
  2. Pulse: cover the back camera and flash with a fingertip for 30 seconds.
  3. Breathing: tap with each breath. CPR coach: follow the beat (100–120 a minute).
How it's tested
  • ✅ Older or lives alone (persona test): Vitals opens
  • ✅ Cares for an older parent (persona test): Vitals opens
  • ✅ Looks after children (persona test): Vitals opens
  • 🧪 Unit tests: vitals.test.ts, vitalsBeats.test.ts, vitalsModel.test.ts
  • ✅ 📱 Android emulator: Health Connect heart rate (no data expected)

Black box recording Web and Android

Optional encrypted sound recording during an SOS; family gets a link to listen.

Use cases: Evidence of harassment · Family hears what is happening

For: 🌙 Travels or walks alone, 🦺 Works alone or at night

How to do it

  1. Me & settings → How SOS starts → “Black box”: switch it on.
  2. During an SOS the phone records sound in 10-second encrypted pieces and uploads each straight away.
  3. Your family (and the people you alerted, by link) can listen; the server can’t.

For real: Only records during a real SOS, so practice mode skips it. Test it with a family member who knows.

How it's tested
  • 🔧 Travels or walks alone (persona test): Unit and server tests
  • 🔧 Works alone or at night (persona test): Unit and server tests
  • 🖥️ Server tests: extras.test.js

Photos in an SOS Web and Android

Three photos with the back camera when an SOS starts (if switched on) or with one tap on the SOS screen: where you are, who is there, the vehicle. Shrunk and sent in small encrypted pieces with retries, so they get through on 2G; only the family and the people alerted can see them.

Use cases: Harassed on a street: a photo of the person · Wrong cab: a photo of the car · An accident: photos for the ambulance

For: 🌙 Travels or walks alone, 🦺 Works alone or at night

How to do it try it in practice mode

  1. Me & settings → How SOS starts → “Photos with an SOS” (or tap “Take photos” on the SOS screen).
  2. When an SOS starts with the app open, 3 photos are taken with the back camera, a few seconds apart.
  3. They go in small encrypted pieces, so they get through on a weak signal. The SOS screen shows how many were sent.
How it's tested
  • ✅ Travels or walks alone (persona test): 3 photos with the (test) back camera, sent as 3 encrypted pieces; the private link opens the photo page; SOS cancelled
  • ✅ Works alone or at night (persona test): 3 photos with the (test) back camera, sent as 3 encrypted pieces; the private link opens the photo page; SOS cancelled
  • 🧪 Unit tests: stolenAndNight.test.ts: photos in an SOS
  • 🖥️ Server tests: extras.test.js: black box … photos from an SOS

Phone snatch alert Android app

A hard pull while you use the phone, then running or riding away, starts a one-minute check. Only the owner can stop it (unlocking from the lock screen, or fingerprint/PIN). Otherwise contacts and family get the phone’s location, and the live page follows the phone. A pulled SIM or switching off sends it at once.

Use cases: Phone snatched from a passing motorbike · Phone grabbed on a crowded bus · Mugged on the way home

For: 🌙 Travels or walks alone, 🦺 Works alone or at night

How to do it try it in practice mode

  1. Tools → Phone stolen → switch on “Tell my contacts if my phone is snatched” (needs a screen lock).
  2. Try it here with “Try the snatch check”: the phone vibrates and asks “Did someone grab your phone?”.
  3. Unlock the phone, or tap “It’s me” and use your fingerprint or PIN: it stops.
  4. Let the minute run out to see what your contacts would get (in practice mode nothing is sent).
How it's tested
  • 🔧 Travels or walks alone (persona test): Android app: emulator test and unit tests
  • 🔧 Works alone or at night (persona test): Android app: emulator test and unit tests
  • 🧪 Unit tests: SnatchDetectorTest.java
  • 🖥️ Server tests: api.test.js: phone snatched: contacts are told it may be with a thief, the live page follows the phone and links the guide
  • ✅ 📱 Android emulator: snatch alert: a suspected snatch starts the one-minute check
  • ✅ 📱 Android emulator: snatch alert: unlocking stops it, nothing is sent

Phone stolen? guide and IMEI Web and Android

What to do, in order: stay safe, tell family, lock/erase (Find Hub), block the SIM, police report, block on Sanchar Saathi, protect money (1930). The phone’s IMEI is kept with the family, end-to-end encrypted, so they can block it. The same guide opens on any phone at /stolen.

Use cases: Phone stolen: what now? · Blocking a family member’s stolen phone

For: 🌙 Travels or walks alone, 🦺 Works alone or at night

How to do it

  1. Tools → Phone stolen.
  2. Dial *#06# to see your IMEI and save it: your family keeps an encrypted copy.
  3. Read the steps: Find Hub, block the SIM, police report, Sanchar Saathi, 1930. The full guide opens on any phone at /stolen.
How it's tested
  • ✅ Travels or walks alone (persona test): guide in order (Sanchar Saathi, 1930); IMEI checked and saved on the phone; /stolen opens on any phone
  • ✅ Works alone or at night (persona test): guide in order (Sanchar Saathi, 1930); IMEI checked and saved on the phone; /stolen opens on any phone
  • 🧪 Unit tests: stolenAndNight.test.ts: IMEI for blocking a stolen phone
  • 🖥️ Server tests: api.test.js: phone snatched … links the guide

Exact location for this emergency (Android 17) Android app

If only approximate location is allowed, the SOS screen offers Android 17’s location button: one tap sends the exact position for this emergency only, without changing the setting.

Use cases: SOS with a position kilometres wide · Someone who chose “approximate” at install

For: 🌙 Travels or walks alone, 👪 Looks after children, 🧓 Older or lives alone, 🤝 Cares for an older parent, 🥾 Treks or goes off-grid, 🦺 Works alone or at night

How to do it try it in practice mode

  1. Only on Android 17 phones where TerraGuard is allowed “approximate” location.
  2. During an SOS a card says your position is only approximate.
  3. Tap “Share my exact location now” and Android’s location button: exact location for this emergency only.
How it's tested
  • 🔧 Travels or walks alone (persona test): Android app: emulator test and unit tests
  • 🔧 Looks after children (persona test): Android app: emulator test and unit tests
  • 🔧 Older or lives alone (persona test): Android app: emulator test and unit tests
  • 🔧 Cares for an older parent (persona test): Android app: emulator test and unit tests
  • 🔧 Treks or goes off-grid (persona test): Android app: emulator test and unit tests
  • 🔧 Works alone or at night (persona test): Android app: emulator test and unit tests
  • 🧪 Unit tests: stolenAndNight.test.ts: Android 17’s precise location button
  • … 📱 Android emulator: Android 17: the location button screen opens

Getting there safely

Walk me home Web and Android

Watches the route; asks “Are you OK?” if you stop, go the wrong way or are late, and listens for danger sounds; alerts if no answer. After dark, compares routes on lit streets (OpenStreetMap and street lights Mapillary saw), main roads, places open and spots where several people felt unsafe.

Use cases: Walking from the metro at night · Child walking home from school

For: 🌙 Travels or walks alone, 👪 Looks after children

How to do it try it in practice mode

  1. Trips → Walk (or the “Walk me home” quick action on Home).
  2. Check in “When I arrive” (pick where) or “After a timer”. After dark, compare the routes (lit streets, busy roads, spots people felt unsafe).
  3. Tap “Start walk”. Stop for long or go the wrong way and you’re asked “Are you OK?”. “+15 min” gives you more time; “I’m here” ends it.
  4. No answer in 2 minutes: your family and contacts get your position (not in practice mode). With “Hold until safe”, letting go of the screen starts an SOS countdown.
How it's tested
  • ✅ Travels or walks alone (persona test): walk started and ended
  • ✅ Looks after children (persona test): walk started and ended
  • 🧪 Unit tests: roadmapNext.test.ts
  • ✅ 📱 Android emulator: walk home starts in the background service
  • ✅ 📱 Android emulator: danger-sound listener running (LiteRT model loaded)
  • ✅ 📱 Android emulator: walk Live Update shows progress
  • ✅ 📱 Android emulator: walk ends cleanly

Ride check and vehicle number Web and Android

Paste the ride text or scan/type the plate (autos too). The route is watched, and any SOS during the ride names the vehicle so police can trace it by its state GPS tracker.

Use cases: Cab home after midnight · Auto-rickshaw with no app · Wrong car arrives

For: 🌙 Travels or walks alone, 🦺 Works alone or at night, 👪 Looks after children

How to do it try it in practice mode

  1. Trips → Ride.
  2. Paste the “share my ride” text, or type the number plate (autos too).
  3. Scan the car’s plate with the camera: green if it matches, red if not — don’t get in.
  4. Tap “Start ride”. Any SOS during the ride names the vehicle.
How it's tested
  • ✅ Travels or walks alone (persona test): typed plate → ride check (Trips → Ride); SOS reached the server with "KA 01 AB 1234", status page names the vehicle; cancelled as an accident (server: CANCELLED)
  • ✅ Works alone or at night (persona test): typed plate → ride check (Trips → Ride); SOS reached the server with "KA 01 AB 1234", status page names the vehicle; cancelled as an accident (server: CANCELLED)
  • ✅ Looks after children (persona test): typed plate → ride check (Trips → Ride); SOS reached the server with "KA 01 AB 1234", status page names the vehicle; cancelled as an accident (server: CANCELLED)
  • 🧪 Unit tests: vehicleSos.test.ts
  • 🖥️ Server tests: api.test.js: an SOS during a ride names the vehicle in the alert and on the status page

Hold until safe Web and Android

On a walk, keep your thumb on the screen. Let go (the phone is grabbed, you fall, you run) and a 10-second SOS countdown starts; cancel it if you are fine.

Use cases: Walking to the car in a dark car park · An underpass at night · Someone is following you

For: 🌙 Travels or walks alone

How to do it try it in practice mode

  1. Trips → Walk → switch on “Hold until safe” (or tap “Hold until safe” during a walk).
  2. Start the walk and keep your thumb on the green pad.
  3. Let go: a 10-second countdown. Tap Cancel if you’re fine; otherwise your SOS goes out.
How it's tested
  • ✅ Travels or walks alone (persona test): walk with “hold until safe”: letting go started the 10-second countdown; Cancel stopped it, nothing was sent
  • 🧪 Unit tests: homeAndTrips.test.ts: countdown

“I felt unsafe here” and night routes Web and Android

During a walk, one tap reports the spot you are standing on (dark, deserted, harassed, followed). A spot shows on others’ night routes only after 3 different phones reported it in 60 days; routes near it score lower and say so. Anonymous: only the ~150 m square is counted.

Use cases: A dark lane on the way to the metro · A corner where people get harassed

For: 🌙 Travels or walks alone, 👪 Looks after children, 🦺 Works alone or at night

How to do it try it in practice mode

  1. During a walk (Trips), tap “This spot felt unsafe”.
  2. Pick why: dark, deserted, harassed, followed.
  3. Once 3 different people report the same spot, night routes avoid it and say so.
How it's tested
  • ✅ Travels or walks alone (persona test): reported "deserted" during a walk; shown on night routes once 3 phones reported it (3 now)
  • ✅ Looks after children (persona test): reported "deserted" during a walk; shown on night routes once 3 phones reported it (6 now)
  • ✅ Works alone or at night (persona test): reported "deserted" during a walk; shown on night routes once 3 phones reported it (9 now)
  • 🧪 Unit tests: stolenAndNight.test.ts: night routes with street lights and felt-unsafe spots
  • 🖥️ Server tests: night.test.js

Share a ride to TerraGuard Web and Android

Share → TerraGuard from Uber, Ola or Rapido (or a photo of an auto’s plate) opens the ride check filled in: app, plate, car, driver. Nothing starts until you tap Start.

Use cases: Cab booked in Uber: one tap to start the ride check · Auto-rickshaw: share a photo of its plate

For: 🌙 Travels or walks alone, 🦺 Works alone or at night

How to do it

  1. Book a ride in Uber, Ola or Rapido.
  2. In the ride app tap Share trip → TerraGuard (or share a photo of an auto’s number plate).
  3. Trips opens on Ride with the app, plate, car and driver filled in. Check the plate, then tap Start ride.
How it's tested
  • ✅ Travels or walks alone (persona test): shared from "Uber": ride check opened with the plate and app filled in; nothing started until Start
  • ✅ Works alone or at night (persona test): shared from "Uber": ride check opened with the plate and app filled in; nothing started until Start
  • 🧪 Unit tests: stolenAndNight.test.ts: a ride shared to TerraGuard
  • ✅ 📱 Android emulator: share a ride text to TerraGuard opens the ride check

Hike / trip with overdue alert Web and Android

Leave a plan and a return time; contacts are alerted if you are overdue, with the last positions.

Use cases: Day trek · Long drive through remote areas

For: 🥾 Treks or goes off-grid, 🦺 Works alone or at night

How to do it

  1. Trips → Hike.
  2. Enter where you’re going, who’s with you and when you’ll be back.
  3. Check in when you’re back. If you don’t, your contacts are told, with your last positions.

For real: Overdue alerts are checked by the server and go to your real contacts: set a return time you will keep, and check in.

How it's tested
  • ✅ Treks or goes off-grid (persona test): Plan a trip opens
  • ✅ Works alone or at night (persona test): Plan a trip opens
  • 🖥️ Server tests: api.test.js: trips

Fake incoming call Web and Android

A realistic incoming call in 10 seconds to a few minutes, to leave an uncomfortable situation.

Use cases: Uncomfortable date or meeting · Pushy salesperson

For: 🌙 Travels or walks alone, 🦺 Works alone or at night

How to do it

  1. Trips → Fake call (or the quick action on Home).
  2. Pick when (5 seconds to a few minutes) and who is “calling”.
  3. Your phone rings like a real call. Answer to hear a voice, then make your excuse and leave.
How it's tested
  • ✅ Travels or walks alone (persona test): scheduled and cancelled
  • ✅ Works alone or at night (persona test): scheduled and cancelled
  • ✅ 📱 Android emulator: fake-call schedule and cancel

Family

Family circle (encrypted) Web and Android

Live location, place alerts, check-ins, SOS and crash alerts, all end-to-end encrypted (MLS). Sharing is always visible and can be paused.

Use cases: Know the children got to school · Parent alerted when grandmother falls

For: 👪 Looks after children, 🤝 Cares for an older parent, 🧓 Older or lives alone, 🌙 Travels or walks alone

How to do it

  1. Circle → Start a family (or open an invite link someone sent you).
  2. Invite people with the Invite button (a link or QR code).
  3. See each other first as a list (where, battery, who needs a check), then on the map, with “arrived at school”-style place alerts. Everything is end-to-end encrypted.

For real: Your family members really see your location.

How it's tested
  • ✅ Looks after children (persona test): created an end-to-end encrypted family
  • ✅ Cares for an older parent (persona test): created an end-to-end encrypted family
  • ✅ Older or lives alone (persona test): created an end-to-end encrypted family
  • ✅ Travels or walks alone (persona test): created an end-to-end encrypted family
  • 🧪 Unit tests: family.test.ts, familyFlow.test.ts, familyMls.test.ts, familyMlsServer.test.ts
  • 🖥️ Server tests: family.test.js

Check-ins, roll call, “Is everyone safe?” Web and Android

One tap “I’m OK”; a roll call after an earthquake or flood with one-tap answers.

Use cases: After a nearby earthquake · Daily “I’m fine” from a parent

For: 👪 Looks after children, 🤝 Cares for an older parent, 🧓 Older or lives alone

How to do it

  1. Circle → Check in → “I’m OK” (or the “Check in” quick action on Home).
  2. Or ask everyone “Are all safe?” (roll call).
  3. Each answer shows in the family feed.

For real: Your family gets the check-in.

How it's tested
  • ✅ Looks after children (persona test): check-in "I'm OK" sent from Circle
  • ✅ Cares for an older parent (persona test): check-in "I'm OK" sent from Circle
  • ✅ Older or lives alone (persona test): check-in "I'm OK" sent from Circle
  • 🧪 Unit tests: familyExtras.test.ts
  • 🖥️ Server tests: family.test.js

Basic phones (no smartphone) Web and Android

Link a feature phone (its owner confirms by texting JOIN or a missed call): a missed call or a text HELP/OK from it alerts the whole family.

Use cases: Grandmother with a basic phone · Relative without data · Free missed call when there is no balance for a text

For: 🤝 Cares for an older parent, 🧓 Older or lives alone

How to do it

  1. Circle → Basic phones → add the number, with their agreement.
  2. They text “JOIN <code>” to the number shown (or give a missed call within 15 minutes).
  3. From then on a missed call or a text saying HELP alerts the whole family.

For real: Needs the server’s SMS or missed-call number. Alerts reach your real family.

How it's tested
  • ✅ Cares for an older parent (persona test): linked a basic phone; HELP ignored until its owner texted JOIN; then HELP alerted the family feed
  • ✅ Older or lives alone (persona test): linked a basic phone; HELP ignored until its owner texted JOIN; then HELP alerted the family feed
  • 🖥️ Server tests: family.test.js: basic phones: a HELP text or a missed call from a linked feature phone alerts the family; family.test.js: basic phones in India: texts through an Indian SMS provider

Ask family for a recharge Web and Android

Out of data or balance, or the plan ends soon: ask the family (by internet, a text, or Bluetooth when there is no signal); one of them pays on the network’s own page, from abroad, or in TerraGuard through a recharge partner, and everyone sees it is done. Requests come encrypted from the member’s own phone, and a different number is flagged. Urgent during an SOS; reminders before a plan ends.

Use cases: Student’s data runs out at night · Parent’s prepaid plan expires · Out of data during an SOS: the live map stops · Family abroad paying for a recharge in India · “Hi Mum, new number” scam

For: 👪 Looks after children, 🧓 Older or lives alone, 🤝 Cares for an older parent, 🌙 Travels or walks alone

How to do it

  1. Circle → Recharges → My number & plan: add your number, network and when the plan ends.
  2. Out of data? Circle → Ask for a recharge (or the “No mobile data?” banner on Home). With no data it offers a text to your family or Bluetooth.
  3. Your family sees it, pays on the network’s page (or “Pay here”), taps “I’ve paid”, and you see who recharged it.

For real: Your family really gets the request. TerraGuard never handles the money.

How it's tested
  • ✅ Looks after children (persona test): saved the number and network; asked the family for a ₹19 recharge (end-to-end encrypted); it shows in Circle → Recharges
  • ✅ Older or lives alone (persona test): saved the number and network; asked the family for a ₹19 recharge (end-to-end encrypted); it shows in Circle → Recharges
  • ✅ Cares for an older parent (persona test): saved the number and network; asked the family for a ₹19 recharge (end-to-end encrypted); it shows in Circle → Recharges
  • ✅ Travels or walks alone (persona test): saved the number and network; asked the family for a ₹19 recharge (end-to-end encrypted); it shows in Circle → Recharges
  • 🧪 Unit tests: topup.test.ts
  • 🖥️ Server tests: topup.test.js
  • … 📱 Android emulator: network info (mobile data without internet)

Scam check and “Is it really them?” Web and Android

One tap asks the family member a caller claims to be; family safe word; “I’m being pressured” makes family ring you; 1930 helpline.

Use cases: “Mummy, save me” voice-clone call · “Digital arrest” call

For: 🧓 Older or lives alone, 🤝 Cares for an older parent

How to do it

  1. Tools → Scam check.
  2. Set a family safe word.
  3. On a suspicious call, tap the family member under “Is it really them?”: their phone asks “Are you OK?” and you see their answer, last location and battery.

For real: “Is it really them?” really asks that family member.

How it's tested
  • ✅ Older or lives alone (persona test): "Is it really them?", safe word and the 1930 helpline shown
  • ✅ Cares for an older parent (persona test): "Is it really them?", safe word and the 1930 helpline shown
  • 🧪 Unit tests: familyFlow.test.ts: verify

Daily rhythm Web and Android

Notices an unusual day (no phone use or movement by the usual time) and asks “All OK?” before telling family.

Use cases: Living alone · Early sign someone is unwell

For: 🧓 Older or lives alone, 🤝 Cares for an older parent

How to do it

  1. Circle → Daily rhythm → switch it on.
  2. The phone learns when you usually start your day.
  3. On a day the phone isn’t used by then, it asks if you’re OK, then tells your family if you don’t answer. Your family sees “needs a check” at the top of Circle.
How it's tested
  • ✅ Older or lives alone (persona test): Daily rhythm opens
  • ✅ Cares for an older parent (persona test): Daily rhythm opens
  • 🧪 Unit tests: roadmapNext.test.ts

Crowd leash Android app

Two phones watch each other over Bluetooth; both alarm the moment a child is out of range.

Use cases: Fair, station, festival, Kumbh

For: 👪 Looks after children

How to do it

  1. Circle → Crowd leash (Android).
  2. Pick the children (their phones must be in your family).
  3. If a phone goes out of Bluetooth range in a crowd, both phones sound an alarm.
How it's tested
  • ✅ Looks after children (persona test): Crowd leash opens
  • 🧪 Unit tests: AgentRulesTest.java

Lost-person tags (QR / NFC) Web and Android

A tag on a bag or jacket: a finder scans it, calls you and sends their location, encrypted.

Use cases: Child or person with dementia gets lost

For: 👪 Looks after children, 🤝 Cares for an older parent, 🧓 Older or lives alone

How to do it

  1. Circle → Lost tag.
  2. Make a QR code (print it on a card or bag) or write an NFC sticker.
  3. Whoever scans it sees how to call you and can send you where they found the person.
How it's tested
  • ✅ Looks after children (persona test): Lost-person tags opens
  • ✅ Cares for an older parent (persona test): Lost-person tags opens
  • ✅ Older or lives alone (persona test): Lost-person tags opens
  • 🖥️ Server tests: family.test.js: tags

Disaster check and official warnings Web and Android

SACHET (NDMA) warnings and flood forecasts for your area; “Are you safe?” after a nearby earthquake or flood.

Use cases: Cyclone warning · Flood forecast · Earthquake nearby

For: 🤝 Cares for an older parent, 🥾 Treks or goes off-grid, 👪 Looks after children

How to do it

  1. Circle → Disasters.
  2. See earthquakes, floods, cyclones and official warnings near you.
  3. After one, everyone in the family is asked “Are you safe?”.
How it's tested
  • ✅ Cares for an older parent (persona test): Disaster check opens
  • ✅ Treks or goes off-grid (persona test): Disaster check opens
  • ✅ Looks after children (persona test): Disaster check opens
  • 🧪 Unit tests: riskEngine.test.ts
  • 🖥️ Server tests: official.test.js

No signal

Bluetooth SOS relay network Android app

Every TerraGuard phone carries other people’s SOS beacons out of a dead zone (on by default); the home screen shows how many nearby can carry yours.

Use cases: SOS from a valley with no signal · After a disaster when towers are down

For: 🥾 Treks or goes off-grid, 🌙 Travels or walks alone, 🦺 Works alone or at night

How to do it

  1. On by default: Me & settings → Advanced → “Relay other people’s SOS”.
  2. Home shows how many TerraGuard phones nearby could carry your SOS when there is no signal.
  3. Trying a relay needs two phones: one sends an SOS with no signal, the other carries it out.
How it's tested
  • ✅ Treks or goes off-grid (persona test): relaying on (default); the nearby count is tested on the emulator
  • ✅ Travels or walks alone (persona test): relaying on (default); the nearby count is tested on the emulator
  • ✅ Works alone or at night (persona test): relaying on (default); the nearby count is tested on the emulator
  • 🧪 Unit tests: BeaconCodecTest.java, RelayHelloTest.java
  • 🖥️ Server tests: mesh.test.js; api.test.js: Bluetooth relay
  • ✅ 📱 Android emulator: relays by default and reports phones nearby that can carry an SOS

No-signal messages Android app

Fixed emergency messages to everyone nearby with your position; your own words only to family, encrypted. Phone to phone over Bluetooth and Wi-Fi Direct.

Use cases: Trekking group separated · Disaster area without network

For: 🥾 Treks or goes off-grid, 🦺 Works alone or at night

How to do it

  1. Circle → No-signal messages (Android).
  2. Send a fixed emergency message to anyone nearby, or your own words to your family (encrypted).
  3. Messages hop phone to phone over Bluetooth, no signal needed.
How it's tested
  • ✅ Treks or goes off-grid (persona test): opens; the web app explains it needs the Android app (tested on the emulator and in unit tests)
  • ✅ Works alone or at night (persona test): opens; the web app explains it needs the Android app (tested on the emulator and in unit tests)
  • 🧪 Unit tests: meshMessages.test.ts, EnvelopeTest.java
  • 🖥️ Server tests: mesh.test.js

SMS fallback, satellite-ready text, last gasp Android app

With one bar and no data the SOS goes by SMS (short enough for satellite texting); a last position is sent when the battery is about to die.

Use cases: Rural area with 2G only · Phone dying while lost

For: 🥾 Treks or goes off-grid, 🌙 Travels or walks alone

How to do it try it in practice mode

  1. Nothing to switch on: with no data, the SOS goes out by SMS from your phone.
  2. Home and the SOS screen also have a short satellite-ready text to copy into a satellite messenger.
  3. When the battery is about to die on a trip, your last position is texted.
How it's tested
  • 🔧 Treks or goes off-grid (persona test): Android app: emulator test and unit tests
  • 🔧 Travels or walks alone (persona test): Android app: emulator test and unit tests
  • 🧪 Unit tests: SmsCodecTest.java, vehicleSos.test.ts
  • 🖥️ Server tests: family.test.js: text-message check-ins

LoRa radio (Meshtastic) Android app

SOS and messages over a paired Meshtastic radio, kilometres without any network.

Use cases: Expedition · Remote site work

For: 🥾 Treks or goes off-grid

How to do it

  1. Tools → Relay & radio → pair a Meshtastic LoRa radio.
  2. Send a test message.
  3. Any SOS then also goes over the radio mesh, kilometres with no phone signal.
How it's tested
  • 🔧 Treks or goes off-grid (persona test): Android app: emulator test and unit tests
  • 🧪 Unit tests: MeshtasticProtoTest.java

Around you

Danger detection Web and Android

Warns before it matters: storms, darkness on a walk, a battery that won’t last, fires nearby, unsafe areas.

Use cases: Battery low before a long trip · Walking somewhere new after dark

For: 🌙 Travels or walks alone, 👪 Looks after children, 🧓 Older or lives alone, 🤝 Cares for an older parent, 🥾 Treks or goes off-grid, 🦺 Works alone or at night

How to do it

  1. Home: the “All clear around you” card (or a warning in its place).
  2. It warns about storms, official warnings, darkness on your route, a battery that won’t last.
  3. Tap a warning for what to do. The status pill at the top says what is on and what needs a look.
How it's tested
  • ✅ Travels or walks alone (persona test): the “Around you” danger detection card on Home
  • ✅ Looks after children (persona test): the “Around you” danger detection card on Home
  • ✅ Older or lives alone (persona test): the “Around you” danger detection card on Home
  • ✅ Cares for an older parent (persona test): the “Around you” danger detection card on Home
  • ✅ Treks or goes off-grid (persona test): the “Around you” danger detection card on Home
  • ✅ Works alone or at night (persona test): the “Around you” danger detection card on Home
  • 🧪 Unit tests: riskEngine.test.ts, AgentRulesTest.java

Area alerts Web and Android

Broadcast a short alert to people nearby and see reports and official alerts around you.

Use cases: Road blocked by flooding · Fire in a building

For: 🌙 Travels or walks alone, 🦺 Works alone or at night, 👪 Looks after children

How to do it try it in practice mode

  1. Tools → Area alerts.
  2. See accidents, fires, floods and “someone needs help” reported near you.
  3. Broadcast one to people nearby (in practice mode it isn’t sent). Confirm or dispute others.
How it's tested
  • ✅ Travels or walks alone (persona test): Area alerts opens
  • ✅ Works alone or at night (persona test): Area alerts opens
  • ✅ Looks after children (persona test): Area alerts opens
  • 🧪 Unit tests: areaVector.test.ts
  • 🖥️ Server tests: extras.test.js

Nearby help Web and Android

Police, hospitals, pharmacies, fuel and toilets nearby, with local emergency numbers.

Use cases: Find the closest hospital · Find a police station

For: 🌙 Travels or walks alone, 👪 Looks after children, 🧓 Older or lives alone, 🤝 Cares for an older parent, 🥾 Treks or goes off-grid, 🦺 Works alone or at night

How to do it

  1. Tools → Nearby help.
  2. Police, hospitals, pharmacies, fuel and toilets nearby, with local emergency numbers.
  3. Tap one for directions or to call.
How it's tested
  • ✅ Travels or walks alone (persona test): Nearby help opens
  • ✅ Looks after children (persona test): Nearby help opens
  • ✅ Older or lives alone (persona test): Nearby help opens
  • ✅ Cares for an older parent (persona test): Nearby help opens
  • ✅ Treks or goes off-grid (persona test): Nearby help opens
  • ✅ Works alone or at night (persona test): Nearby help opens
  • 🧪 Unit tests: utils.test.ts

Hazard map and offline maps Web and Android

Your position, hazards and reports on a map that keeps working offline in places you saved.

Use cases: Plan a route around a flooded area

For: 🥾 Treks or goes off-grid, 🌙 Travels or walks alone

How to do it

  1. Map tab.
  2. See your position, hazards and alerts.
  3. Save the area for offline use before a trip.
How it's tested
  • ✅ Treks or goes off-grid (persona test): map shows
  • ✅ Travels or walks alone (persona test): map shows

Local groups Web and Android

Building, street or school groups that can broadcast emergencies and roll calls.

Use cases: Apartment fire · Neighbourhood flood

For: 🌙 Travels or walks alone, 👪 Looks after children, 🥾 Treks or goes off-grid

How to do it

  1. Circle → Groups.
  2. Create one for your building, street or school, or join with its code.
  3. Broadcast an emergency or start a roll call.

For real: Posts reach the real members of the group.

How it's tested
  • ✅ Travels or walks alone (persona test): Local groups opens
  • ✅ Looks after children (persona test): Local groups opens
  • ✅ Treks or goes off-grid (persona test): Local groups opens
  • 🖥️ Server tests: extras.test.js

Trained volunteers nearby Web and Android

People trained in first aid can sign up; an SOS nearby asks them to help.

Use cases: Road accident in the golden hour

For: 🌙 Travels or walks alone, 🦺 Works alone or at night

How to do it

  1. Me & settings → Community responder: switch on and tick your skills (first aid, CPR…).
  2. When someone within about 5 km sends an SOS, you’re asked if you can go.
  3. Say yes and you see where they are.

For real: You may be asked to help a real person nearby.

How it's tested
  • 🔧 Travels or walks alone (persona test): Unit and server tests
  • 🔧 Works alone or at night (persona test): Unit and server tests
  • 🧪 Unit tests: responders.test.ts
  • 🖥️ Server tests: responders.test.js

Help and information

Ask TerraGuard (offline AI) Web and Android

First aid and safety answers offline, in English and Indian languages; commands like “tell my family I’m safe” (always asks first, never sends an SOS).

Use cases: Snake bite on a trek · Being followed: what to do

For: 🌙 Travels or walks alone, 🧓 Older or lives alone, 🥾 Treks or goes off-grid

How to do it

  1. Tools → Ask.
  2. Tap a question (for example “Being followed”) or type your own.
  3. The answer comes from the phone, without the internet.
How it's tested
  • ✅ Travels or walks alone (persona test): offline answer to "Being followed" (482 chars on screen)
  • ✅ Older or lives alone (persona test): offline answer to "Being followed" (482 chars on screen)
  • ✅ Treks or goes off-grid (persona test): offline answer to "Being followed" (482 chars on screen)
  • 🧪 Unit tests: assistantLocal.test.ts, commands.test.ts, gemmaModel.test.ts
  • 🖥️ Server tests: asr.test.js
  • ✅ 📱 Android emulator: Gemma status (llmStatus)
  • … 📱 Android emulator: speech model transcribes English (sherpa-onnx)

First aid triage Web and Android

Step-by-step first aid for the commonest emergencies, offline.

Use cases: Burns at home · Child choking

For: 👪 Looks after children, 🧓 Older or lives alone, 🤝 Cares for an older parent, 🥾 Treks or goes off-grid

How to do it

  1. Tools → First aid (also on the SOS screen).
  2. Answer a few questions about what happened.
  3. Follow the steps on screen until help arrives.
How it's tested
  • ✅ Looks after children (persona test): First aid opens
  • ✅ Older or lives alone (persona test): First aid opens
  • ✅ Cares for an older parent (persona test): First aid opens
  • ✅ Treks or goes off-grid (persona test): First aid opens
  • 🧪 Unit tests: triage.test.ts

Weather, water & cold, altitude Web and Android

Weather ahead, water and cold-exposure guidance, altitude and acclimatisation.

Use cases: Storm moving in on a trek · Altitude sickness signs

For: 🥾 Treks or goes off-grid

How to do it

  1. Tools → Weather, Water & cold, or Altitude.
  2. Storm and heat warnings, how long water lasts, signs of altitude sickness.
  3. Use them before and during a trek.
How it's tested
  • ✅ Treks or goes off-grid (persona test): Weather, Water & cold and Altitude open
  • 🧪 Unit tests: survival.test.ts

Signal for help, find a light Web and Android

Screen and torch SOS strobe; searchers’ camera finds a flashing SOS light.

Use cases: Signalling a rescue helicopter · Searching at night

For: 🥾 Treks or goes off-grid

How to do it

  1. Tools → Signal for help: SOS flashes with the torch and screen, a loud whistle (or the “Loud alarm” quick action).
  2. Rescuers: Tools → Find a light, and point the camera around.
  3. It finds an SOS light flashing in the dark.
How it's tested
  • ✅ Treks or goes off-grid (persona test): SOS signal and flashing-light finder open

Work and groups

Lone-worker shifts Web and Android

A supervisor’s team: workers check in every N minutes; a missed check-in, HELP or SOS alerts supervisors; a live dashboard.

Use cases: Security guard on night patrol · Home-care visits

For: 🦺 Works alone or at night

How to do it

  1. Trips → Work shift → join with the code from your supervisor.
  2. Tap Start shift. Check in “I’m OK” when asked.
  3. A missed check-in or HELP alerts your supervisors.

For real: Your team’s supervisors really see your check-ins.

How it's tested
  • ✅ Works alone or at night (persona test): joined with the code (consent), started a shift, checked in; the supervisor’s dashboard shows it
  • 🖥️ Server tests: teams.test.js: teams: shifts, missed check-ins, help, SOS and the dashboard

Night safety: ride home to the security desk Web and Android

The ride home shared with the team’s security desk (vehicle, expected arrival); SOS on the way or not home 20 minutes late alerts supervisors; consent records and a CSV report for audits.

Use cases: Women on night shifts (state rules) · POSH and audit records

For: 🦺 Works alone or at night

How to do it

  1. In a work team: Trips → Ride.
  2. Leave “security desk can follow” on and tap Start ride.
  3. Tap “I’m here” at home. Not home 20 minutes after the expected time? The desk is alerted.

For real: Your company’s security desk really sees the ride.

How it's tested
  • ✅ Works alone or at night (persona test): ride home shared: the desk saw the vehicle; "I’m here" closed it; the report has the consent and the ride
  • 🖥️ Server tests: teams.test.js: night safety: the ride home is shared with the security desk, with consent records and a report

Crowd mode for events Web and Android

Organisers run a crowd dashboard; families reunite phone to phone with finder beacons.

Use cases: Festival or Kumbh · Stadium event

For: 👪 Looks after children, 🦺 Works alone or at night

How to do it

  1. Tools → Crowd safety → join an event with its code.
  2. The phone anonymously reports how crowded it is around you.
  3. If it gets dangerous, you’re shown a way out.
How it's tested
  • ✅ Looks after children (persona test): Crowd safety opens
  • ✅ Works alone or at night (persona test): Crowd safety opens
  • 🖥️ Server tests: crowd.test.js

Privacy and settings

Privacy & your rights (DPDP) Web and Android

Notice per purpose, consent switches, download your data, erase it, nominate someone, complain. Children need a parent’s consent.

Use cases: See what the server holds · Erase everything

For: 🌙 Travels or walks alone, 👪 Looks after children, 🧓 Older or lives alone, 🤝 Cares for an older parent, 🥾 Treks or goes off-grid, 🦺 Works alone or at night

How to do it

  1. Me & settings → Privacy and your data → Privacy & your rights.
  2. Download everything the server has about you, or erase it.
  3. See and change your consents.
How it's tested
  • ✅ Travels or walks alone (persona test): privacy centre with download and erase
  • ✅ Looks after children (persona test): privacy centre with download and erase
  • ✅ Older or lives alone (persona test): privacy centre with download and erase
  • ✅ Cares for an older parent (persona test): privacy centre with download and erase
  • ✅ Treks or goes off-grid (persona test): privacy centre with download and erase
  • ✅ Works alone or at night (persona test): privacy centre with download and erase
  • 🖥️ Server tests: privacy.test.js

Try it: every feature, with practice mode Web and Android

Tools → Try it lists every feature with its use cases and step-by-step instructions, and a Try it button. Practice mode (30 minutes) lets testers set off an SOS, a countdown, the snatch check or a walk alert for real on the phone, while nothing is sent to anyone.

Use cases: A new tester learning the app · Showing a parent how SOS works without scaring anyone · Checking the power button works before a trip

For: 🌙 Travels or walks alone, 👪 Looks after children, 🧓 Older or lives alone, 🤝 Cares for an older parent, 🥾 Treks or goes off-grid, 🦺 Works alone or at night

How to do it

  1. Tools → Try it (the card at the top), or finish setup with “Start practice SOS”.
  2. Tap “Start practice mode”: a yellow bar shows while it’s on (30 minutes).
  3. Open any feature for its use cases and steps, then tap “Try it”. Mark it as tried.
  4. An SOS or countdown in practice mode only shows what would have been sent.
How it's tested
  • ✅ Travels or walks alone (persona test): practice mode on → held SOS: the practice SOS screen showed, the server got nothing; cancelled; marked tried; practice mode off
  • ✅ Looks after children (persona test): practice mode on → held SOS: the practice SOS screen showed, the server got nothing; cancelled; marked tried; practice mode off
  • ✅ Older or lives alone (persona test): practice mode on → held SOS: the practice SOS screen showed, the server got nothing; cancelled; marked tried; practice mode off
  • ✅ Cares for an older parent (persona test): practice mode on → held SOS: the practice SOS screen showed, the server got nothing; cancelled; marked tried; practice mode off
  • ✅ Treks or goes off-grid (persona test): practice mode on → held SOS: the practice SOS screen showed, the server got nothing; cancelled; marked tried; practice mode off
  • ✅ Works alone or at night (persona test): practice mode on → held SOS: the practice SOS screen showed, the server got nothing; cancelled; marked tried; practice mode off
  • 🧪 Unit tests: practice.test.ts
  • 🖥️ Server tests: api.test.js: use cases page lists every feature…
  • ✅ 📱 Android emulator: practice mode: the power button countdown runs, nothing is sent

Night mode Web and Android

After sunset (or always): the app goes dark and dim, and stays quiet — it vibrates but says nothing out loud — so using it on a dark street doesn’t light up your face or draw attention. Also: text size and the home screen’s quick actions.

Use cases: Checking the route home at night · Using the phone on a bus without drawing attention · Large text for older eyes

For: 🌙 Travels or walks alone, 🥾 Treks or goes off-grid

How to do it

  1. Me & settings → Look and sound → Night mode: “After sunset” or “Always”.
  2. The app turns dark and dim; journeys vibrate instead of speaking.
  3. Text size is on the same page; the four quick actions on Home are changed with “Edit”.
How it's tested
  • ✅ Travels or walks alone (persona test): Me & settings → Look and sound → Night mode “Always”: the app went dark and dim; switched off again
  • ✅ Treks or goes off-grid (persona test): Me & settings → Look and sound → Night mode “Always”: the app went dark and dim; switched off again
  • 🧪 Unit tests: homeAndTrips.test.ts: night mode

Tablets and foldable phones Web and Android

On a tablet, an unfolded phone or a computer: a navigation rail on the left and two panes side by side (the family list next to the map, the SOS next to everything else), as Android 17 asks of apps on big screens.

Use cases: A family tablet on the kitchen table · Caring for a parent from a laptop · A foldable phone opened up

For: 🤝 Cares for an older parent, 👪 Looks after children

How to do it

  1. Open TerraGuard on a tablet, an unfolded phone or a computer.
  2. The tabs move to a rail on the left.
  3. Circle shows the list and the map side by side; Home puts the SOS button on the right.
How it's tested
  • ✅ Cares for an older parent (persona test): at 1280×800 the tabs became a 96 px rail on the left
  • ✅ Looks after children (persona test): at 1280×800 the tabs became a 96 px rail on the left
  • 🧪 Unit tests: homeAndTrips.test.ts: big screens

Guided setup by persona Web and Android

Choose who the app is for: the right protections switch on and the matching tools come first.

Use cases: First start · Changing needs

For: 🌙 Travels or walks alone, 👪 Looks after children, 🧓 Older or lives alone, 🤝 Cares for an older parent, 🥾 Treks or goes off-grid, 🦺 Works alone or at night

How to do it

  1. Me & settings → Who it’s for → Change.
  2. Choose who TerraGuard is for (travelling alone, children, older parent, trekking, work).
  3. Your quick actions, the first kind of trip and the right protections follow from it.
How it's tested
  • ✅ Travels or walks alone (persona test): persona saved and its protections on (dangerDetection, fallDetection)
  • ✅ Looks after children (persona test): persona saved and its protections on (helpFind)
  • ✅ Older or lives alone (persona test): persona saved and its protections on (fallDetection, rhythm, rhythmShare)
  • ✅ Cares for an older parent (persona test): persona saved and its protections on (none needed)
  • ✅ Treks or goes off-grid (persona test): persona saved and its protections on (relayEnabled, disasterCheck, shareCoverage)
  • ✅ Works alone or at night (persona test): persona saved and its protections on (fallDetection, crashDetection)
  • 🧪 Unit tests: roadmapNow.test.ts: guided setup

Background protection (fall, crash, Live Updates) Android app

Fall and crash detection with a 30-second countdown, a visible notification while protecting, Live Updates on the lock screen.

Use cases: A fall at home · Car crash

For: 🧓 Older or lives alone, 🦺 Works alone or at night, 🌙 Travels or walks alone

How to do it try it in practice mode

  1. Tap the status pill at the top (or Circle → “Keep sharing reliable”): fix what’s missing (location all the time, notifications, battery, alarms).
  2. Fall and crash detection run in the background with a 30-second countdown.
  3. In practice mode a countdown that runs out only shows what would be sent.
How it's tested
  • 🔧 Older or lives alone (persona test): Android app: emulator test and unit tests
  • 🔧 Works alone or at night (persona test): Android app: emulator test and unit tests
  • 🔧 Travels or walks alone (persona test): Android app: emulator test and unit tests
  • 🧪 Unit tests: FallModelTest.java, DriveDetectorTest.java, LiveUpdateTest.java, fallModel.test.ts
  • ✅ 📱 Android emulator: app loaded
  • ✅ 📱 Android emulator: getPermissions
  • ✅ 📱 Android emulator: no crash report

Security of the app and server Web and Android

Device tokens stored hashed and compared in constant time, size limits on requests, escaped server pages, CSV-safe reports, no framing, no tokens in Referer, signed SMS webhooks, confirmed basic phones, no backups of keys, no secrets in the code.

Use cases: A stolen status link · Someone linking another person’s phone

For: 🌙 Travels or walks alone, 👪 Looks after children, 🧓 Older or lives alone, 🤝 Cares for an older parent, 🥾 Treks or goes off-grid, 🦺 Works alone or at night

How to do it

  1. Nothing to try: it’s how the app and server protect you.
  2. Read the security review and the privacy notice.
  3. Report anything that worries you.
How it's tested
  • 🔧 Travels or walks alone (persona test): Unit and server tests
  • 🔧 Looks after children (persona test): Unit and server tests
  • 🔧 Older or lives alone (persona test): Unit and server tests
  • 🔧 Cares for an older parent (persona test): Unit and server tests
  • 🔧 Treks or goes off-grid (persona test): Unit and server tests
  • 🔧 Works alone or at night (persona test): Unit and server tests
  • 🧪 Unit tests: familyMls.test.ts
  • 🖥️ Server tests: api.test.js: invite links open the Android app; privacy page; API answers are never cached; family.test.js: text-message check-ins: signed by Twilio…

How the tests run

Made from the code and the latest test results. Feature list: server/useCases.js.