Inspiration
I wanted to build something that could actually help someone in a scary moment, not just look good in a demo. A lot of safety apps are bloated, need an account, or need signal. I wanted one that's instant, works offline, and doesn't get in your way when you're panicking. I built the whole thing around the fight-or-flight response — when you're scared, you shouldn't have to think.
What it does
SafeHer is a Progressive Web App for personal safety:
- SOS — hold the button and it texts all your emergency contacts with your location.
- Check-in timer — set a timer, and if you don't check in by the deadline it alerts your contacts automatically.
- Live location sharing — sends a Google Maps link so people can find you.
- Fake call — triggers a realistic incoming call so you can excuse yourself out of an unsafe situation.
- Installs like a real app and works fully offline.
How I built it
It's a single-file PWA — vanilla JavaScript, HTML, and CSS, no framework. It uses the Geolocation API for location, sms:/Web Share to reach contacts, localStorage so everything stays on your device (no accounts, no server), and a service worker so it works offline. Deployed on Netlify.
Challenges I ran into
The biggest one: a web app can't auto-send a text. So I designed the SOS to prefill the message and pre-select every contact, cutting it down to the fewest possible taps. Getting location fast and reliable, and keeping the check-in timer running, took a lot of testing.
What I learned
How to build a real offline-capable PWA, how browsers limit what web apps can do and how to design around those limits, and that for a safety tool, speed and reliability matter way more than how it looks.
What's next for SafeHer
Full offline support (dropping the last external dependency), asking for location permission up front so it's ready before an emergency, and getting real users to test the emergency flow on their phones.
Live app: https://safehercompanion.netlify.app Code: https://github.com/Vibennnnn/safeher
Built With
- css3
- geolocation-api
- html5
- javascript
- localstorage
- pwa
- service-worker
- web-share-api