You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A dual-persona Android safety app connecting elderly users with trusted family members through real-time monitoring, emergency response, and AI-powered assistance.
About
Guardian Saathi pairs two roles on a single platform: the Elder (person being watched over) and the Guardian (trusted family member doing the watching). The Elder's device runs a persistent foreground service that streams live location, battery status, and fall events to Firebase — all surfaced in the Guardian's real-time dashboard.
Beyond monitoring, the app arms the Elder with a panic SOS button, AI voice assistant (Gemini), medicine reminders, and intelligent scam/fraud SMS detection — making it a full safety companion, not just a tracker.
Screenshots
App Flow
Application Flow Diagram
Elder Persona
Home
Emergency Contacts
Elder Home
Emergency Contacts
Guardian Persona
Home
Alerts
Geofence
Guardian Home
Alerts
Geofence
Features
Elder Persona
Feature
Description
Fall Detection
Accelerometer-based 3-phase detection (free fall → impact → stillness). Triggers full-screen alarm and Guardian alert.
Panic SOS
One-tap emergency button. Fires push notification to linked Guardian instantly.
Medicine Reminders
Schedule medications with take/skip actions. Powered by AlarmManager + BroadcastReceiver.
Voice Assistant
Natural language assistant using Google Gemini API. Hands-free for accessibility.
Scam / Fraud Detection
AI-powered SMS scanning to flag phishing, fraud, and unknown callers.
Emergency Contacts
Locally stored contacts (Room DB) for quick SOS access without internet.
QR Link to Guardian
Generates a QR code for secure one-time pairing with a Guardian account.
Multi-language UI
Full interface in English, Hindi, Bengali, and Tamil.
Guardian Persona
Feature
Description
Live Location Map
Real-time map of Elder's location, updated every 3 minutes via Firebase RTDB.
Battery Monitoring
Live battery level and charging status, updated every 5 minutes.
Push Alerts
FCM notifications for falls, SOS presses, and critical events.
Guardian link flow → GuardianShellRoute (bottom-nav)
SplashViewModel reads UserSessionManager on cold start to decide which graph to enter.
Key Design Patterns
Result<D, E> — All repository methods return a sealed Result type. Helpers: map, onSuccess, onFailure, asEmptyResult.
UserSessionManager — DataStore singleton tracking login state, role, link status, and persona display names/photos.
Foreground Service — GuardianService runs continuously on Elder device (START_STICKY, restarts on boot via BootReceiver). Streams location every 3 min and battery every 5 min to Firebase RTDB.
Firebase split — Realtime Database for high-frequency live sensor data; Firestore for structured user and link data.
One-shot event channel — ViewModels expose Channel<Event> for navigation and one-time UI events (e.g., logout, permission prompts).
Prerequisites
Android Studio Meerkat (2024.3) or newer
JDK 11+
Android device or emulator running API 26+
Firebase project with Authentication, Firestore, Realtime Database, and Cloud Messaging enabled
Google Maps API key (Android restrictions)
Google Gemini API key
Setup
1. Clone the repository
git clone https://github.com/[your-repo-url]/Guardian-Sathi.git
cd Guardian-Sathi
2. Add Firebase configuration
Download google-services.json from your Firebase project console and place it at:
app/google-services.json
3. Configure API keys
Create local.properties in the project root (if it does not exist) and add: