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
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.
How it’s built
- 01Expo Router appJourney wizard, live journey and safety tools
- 02Express APIAuth, journeys, check-ins and contacts
- 03MongoDBJourneys with check-in and location history
- 04OpenStreetMap servicesSearch, routing and nearby places
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.
Under the hood
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.
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.
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.
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.
Built with
- React Native
- Expo
- Expo Router
- TypeScript
- React Native Maps
- Reanimated
- Expo Location
- Task Manager
- Expo Contacts
- Expo SMS
- Expo Battery
- Secure Store
- Node.js
- Express 5
- MongoDB
- Mongoose
- JWT
- bcrypt
- Nominatim
- OSRM
- Overpass