Where
Under testingA cross-platform personal-safety app — built solo, end-to-end, from native modules to billing.
Nov 2025 — Present
Summary
Where is the project I'm pouring everything into right now. It's a personal-safety app for iOS and Android that lets a small circle of trusted people share live location, raise SOS, and stay in touch — even when the network is bad and even when the app is killed. I'm building every layer myself: the React Native app, the custom native modules, the Node/Postgres backend, the real-time and push pipelines, in-app subscriptions, store submissions, and the ops around it.
The problem
Most personal-safety apps quietly assume a perfect network and a foreground app. Real emergencies are not that. Where is built for the messy middle — patchy signal, app killed by the OS, contacts in motion, low battery — so an SOS sent from a phone in a pocket on a bad connection still rings on a trusted person's lock screen seconds later.
What it does
Real-time SOS with multi-responder sessions
One-tap distress signal with full-screen actionable alerts and quick Accept/Decline that work in foreground, background, and killed app states. Multiple responders can join a live session with voice/video and coordinate in real time.
Live location sharing with battery-aware sampling
Bi-directional, real-time location streaming on an interactive Google Map. An adaptive sampler gates updates on distance, time, speed, and battery state so accuracy stays high without draining the phone.
Daily places & map pins
Privacy-respecting frequent-place inference (home, work, regulars) and user-created pins with voice notes — useful context for the people who care about you, without becoming surveillance.
Real-time chat with rich media
Reactions, edits, read receipts, presence, and image/video/voice/document attachments. Optimistic delivery with idempotent message IDs so retry storms don't create duplicates.
Voice AI safety assistant
A location-aware voice assistant for hands-free use during emergencies — multilingual speech in, multilingual speech out, with tools for weather, routes, and contact context.
iOS Live Activities
Lock-screen and Dynamic Island widgets that track active SOS state and shared location, updated via push so they stay live even when the app isn't open.
Push notifications across every app state
FCM on Android, APNs on iOS, with critical-alert delivery for SOS so emergencies bypass silent mode. Separate channels and dedicated action handlers per category — nothing important gets buried.
Subscriptions & group billing
Individual and group plans with seat management and per-feature quotas. RevenueCat for in-app purchases on both stores, with server-side entitlement checks and webhook reconciliation.
Offline-first by design
Local SQLite (Drizzle) holds chat, contacts, and recent location history. A delta-sync orchestrator and exponential-backoff queue keep things usable with no internet and reconcile cleanly when it returns.
Trust & moderation
Connection requests, blocking, and in-app reporting for user-generated content — the basics App Review (and users) actually expect.
Tech stack
Highlights
- Built and maintained solo — design, native modules, server, payments, store submissions, ops.
- Wrote custom Expo native modules for background location, iOS location push, the proximity sensor, and raw PCM audio for voice AI.
- SOS notifications survive app-killed state on both Android and iOS, with iOS critical alerts so they bypass silent mode.
- Real-time layer is horizontally scalable from day one (Socket.IO + Redis pub/sub), with a hybrid REST + WebSocket sync path and idempotent writes.
- Subscription pipeline handles individual and group billing end-to-end with quota enforcement and webhook idempotency.
- App attestation wired in on both platforms (Play Integrity on Android, DeviceCheck on iOS) at the API and socket layers.
- Offline-first architecture means chat, location history, and SOS are still useful with no connection.
