How mhacccc/ping-me-safetyapp works
PingMe is a mobile-first safety PWA for people using a GPS/SOS bracelet and their trusted family observers. Users sign in, view linked people and live bracelet status/location, manage safe zones, and review notifications and incident reports. Bracelet SOS status drives alert records, report creation, and optional emergency SMS; geofence monitoring produces entry/exit alerts. The tree and excerpts support these core flows, but not the implementation details of every page or provider. The admin area is explicitly a local mock backed by browser storage, separate from Firebase user operations.
Main entry points: AppLayout.jsx User app layout · App.jsx Application routes · useBraceletData.js Bracelet data sync · GeofenceMonitorProvider.jsx Geofence monitoring
Components 24
PWA experience
- Application routes
src/App.jsx - User app layout
src/layouts/AppLayout.jsx - Safety home
src/pages/home-page/Home.jsx - People tracking
src/pages/people/People.jsx - Safe places
src/pages/places/Places.jsx - Incident reports
src/pages/report/Report.jsx - Report details
src/pages/report/ReportDetail.jsx - Notifications
src/pages/notifications/Notifications.jsx
Identity and setup
- Authentication
src/context/AuthContext.jsx - Sign-in and signup
src/context/Login.jsx - Onboarding
src/pages/onboarding/Onboarding.jsx
Tracking and response
- Bracelet data sync
src/hooks/useBraceletData.js - Location history
src/hooks/useLocationHistory.js - Geofence monitoring
src/context/GeofenceMonitorProvider.jsx - Geofence operations
src/services/geofenceService.js - Alert persistence
src/services/notificationService.js - SMS delivery
src/services/smsService.js - Firebase connection
src/config/firebaseConfig.js
Local admin
- Admin pages
src/pages/admin/AdminDashboard.jsx - Mock admin data
src/services/adminMockService.js
Other components
- Safety user
- SOS bracelet
- Firebase
- Semaphore SMS
Connections 31
- Safety user → Application routes: opens
- Application routes → Authentication: provides auth
- Application routes → Sign-in and signup: routes to
- Application routes → Onboarding: routes to
- Application routes → User app layout: routes to
- User app layout → Safety home: renders
- User app layout → People tracking: renders
- User app layout → Safe places: renders
- User app layout → Incident reports: renders
- User app layout → Report details: renders
- User app layout → Notifications: renders
- Authentication → Firebase connection: uses
- Firebase connection → Firebase: connects
- SOS bracelet → Firebase: sends status
- Safety home → Bracelet data sync: reads status
- People tracking → Bracelet data sync: reads tracking
- Bracelet data sync → Firebase: reads live data
- Location history → Firebase: subscribes history
- Safe places → Geofence monitoring: manages zones
- Geofence monitoring → Geofence operations: uses operations
- Geofence monitoring → Alert persistence: saves alerts
- Alert persistence → Firebase: writes alerts
- Bracelet data sync → Alert persistence: records SOS
- Bracelet data sync → Firebase: writes reports
- Bracelet data sync → SMS delivery: requests SMS
- SMS delivery → Semaphore SMS: sends messages
- Notifications → Firebase: reads alerts
- Incident reports → Firebase: reads reports
- Report details → Firebase: reads report
- Application routes → Admin pages: routes to
- Admin pages → Mock admin data: uses mock data