Projects / EchoLoc

Mobile

EchoLoc

A privacy-first live location sharing app. Users share location with a group only for a defined time window, not as always-on tracking. The app includes group chat, invites, and a live map over Socket.IO, backed by a custom API.

ExpoReact NativeSocket.IONode.jsAuth

01 Walkthrough

One short demo and two screens from the product.

Screenshot 01
Screenshot 02

02 Stack layers

Mobile

ExpoReact NativeMapsChat

Realtime

Socket.IOTimed sessions

Backend

Echo_APIAuthGroups

03 Architecture

REQUESTWS session.start(group, ttl)tracing
authpingsverifyexpirybroadcastExpo AppReact NativeCLIENTREST APIAuth · groupsSVCSocket.IOPings · fanoutSVCOAuthGoogle · AppleEXTSession ManagerTTL · expirySVCMongoDBGroups · pingsDATA

Expo authenticates over REST, then streams location pings over Socket.IO. Session manager enforces TTL and ends sharing when time is up.

  • Full Expo/React Native app with timed sharing sessions
  • Group creation, invites, and in-group chat
  • Live map + Socket.IO; email and Google/Apple sign-in

04 Engineering challenges

01

Timed privacy model

Sharing is scoped to a user-defined window. Sessions expire on the server, so a client bug cannot leave tracking on.

02

Live group map

Location pings fan out over Socket.IO rooms to group members in real time while a session is active.

03

Event-based groups

Invite codes, membership roles, and in-group chat support temporary sharing circles around real events.

04

Multi-provider auth

Email plus Google and Apple sign-in for low-friction mobile onboarding.

05 Trade-offs & decisions

Socket.IOvsPolling

Sub-second location updates with connection fallbacks that survive flaky mobile networks.

ExpovsBare React Native

Managed workflow shipped both platforms fast; native modules were not a blocker.

TTL sessionsvsAlways-on sharing

Privacy is the product. Expiry is enforced in the data model, not only in the UI.