First real-time geolocation emergency broadcaster in Nigeria
# SecureLink
Emergency SOS app for Nigeria. Press a button, your contacts and nearby responders get notified with your GPS location.
## What it does
- **SOS alert** — Tap 4 times to send. Your location goes to your emergency contacts via SMS and to responders on a live map.
- **Voice trigger** — Set custom words ("help", "danger", etc). Say them and the SOS fires automatically.
- **Volume button SOS** — Press volume-down 3 times on Android. Works with the screen off.
- **Dead-man's switch** — Set a check-in timer. If you don't confirm you're safe, SOS triggers on its own.
- **Duress PIN** — A second password that looks like a normal login but silently sends an SOS.
- **Offline mode** — No internet? SOS falls back to SMS + a loud siren alarm. Also broadcasts via Nostr relays if available.
- **USSD** — Coming soon. Dial a code from any phone, no app needed.
## Download
**Android APK:** SecureLink.apk
iOS needs to be built from source via Xcode (Apple signing requirement).
## Tech
- **Frontend:** React + Vite, Capacitor 6 for Android/iOS, PWA with service worker
- **Backend:** Node.js, Express, MongoDB, Socket.io
- **SMS:** Africa's Talking / Termii
- **Offline:** Nostr relays, Web Audio siren, navigator.vibrate, IndexedDB queue
## Running locally
```bash
# Backend
cd backend
cp .env.example .env # add your MongoDB URI and JWT secret
npm install && npm start
# Frontend
cd frontend
npm install && npm run dev
```
## Project structure
```
backend/
models/ — User, SOS, CheckIn, EmergencyContact
routes/ — auth, sos, contacts, checkin, admin
services/ — SMS notifier, check-in monitor
frontend/
src/
pages/ — Dashboard, Login, Register, Profile, Contacts, Incidents
components/ — SOSButton, CheckInWidget, EmergencyCall, MapComponent
hooks/ — geolocation, speech recognition, shake detection
services/ — API client, offline SOS, Nostr
android/ — Capacitor Android project
```
## Design system
`project/` contains the SecureLink desig …