Skip to main content
Project 07 · Mobile app

Homecoming

Homecoming – Personal Safety Journeys

A safety net for the trip home.

A React Native safety app for travelling alone. Plan a route, share the journey with trusted contacts and check in on the way. Miss a check-in and it prepares an SOS message with your location.

Type
Mobile app
Team
Solo project
Core stack
React Native · Expo · Expo Router
Overview

Problem and solution

The problem

Sharing a live location shows where someone is, not whether they are okay. Someone walking home alone at night has no simple way to confirm they arrived, or to raise the alarm when they stop responding.

The solution

Homecoming turns a trip into a timed safety journey. You choose a destination, a route and trusted contacts, and the app asks you to check in at an interval sized to the trip. If you miss one, a countdown starts and then an emergency message with your location is prepared for your contacts.

Architecture

How it’s built

  1. 01Expo Router appJourney wizard, live journey and safety tools
  2. 02Express APIAuth, journeys, check-ins and contacts
  3. 03MongoDBJourneys with check-in and location history
  4. 04OpenStreetMap servicesSearch, routing and nearby places
Features

What it does

Journeys

  • Route planningSearch a destination and compare routes for walking, cycling, driving or bus.
  • Timed check-insThe check-in interval is sized from the route’s duration.
  • Missed check-in alertsA countdown after the grace period, then an SOS message with your location.
  • Background trackingLocation keeps updating while the app is in the background.

Safety tools

  • SOS buttonOne tap prepares a message with your location for every trusted contact.
  • Fake callA realistic incoming-call screen for a quick way out.
  • Low-battery warningOffers to tell your contacts before tracking might stop.

Your data

  • Trusted contactsImport contacts straight from the phone.
  • Templates and favouritesSave regular journeys and places.
  • InsightsJourneys taken, minutes travelled and alerts sent.
Technical highlights

Under the hood

  1. Missed check-in detection

    A 15-second check compares the clock with the last check-in plus the interval and grace period, and re-arms on every new check-in so an alert never fires twice.

  2. Background location

    A TaskManager task posts location updates to the API while the app is backgrounded, and is skipped in Expo Go, which lacks the native permissions it needs.

  3. Open map services with fallbacks

    Places come from Nominatim and Overpass, tried across mirrors, and routes from OSRM with a straight-line estimate if routing fails.

  4. Honest alerts

    Expo can’t send texts silently, so alerts open a pre-filled message and the app tells you to tap Send rather than implying it already went.

Tech stack

Built with

Mobile
  • React Native
  • Expo
  • Expo Router
  • TypeScript
  • React Native Maps
  • Reanimated
Device APIs
  • Expo Location
  • Task Manager
  • Expo Contacts
  • Expo SMS
  • Expo Battery
  • Secure Store
Backend
  • Node.js
  • Express 5
  • MongoDB
  • Mongoose
  • JWT
  • bcrypt
Maps
  • Nominatim
  • OSRM
  • Overpass
Screens