SOS – Personal Emergency Companion
A personal safety app to quickly share your location during emergencies.
SOS is a personal safety Android application designed to assist users during emergency situations by enabling quick access to location-based help.
The app focuses on simplicity, reliability, and transparency. From the first launch, SOS guides users through a clear onboarding process, explains why permissions are required, and prepares the app for use in critical moments where every second matters.
🔐 What SOS Currently Offers
Guided onboarding with clear safety-focused explanations
Secure local storage of user information
Smart app entry handling for first-time and returning users
High-accuracy location capture using device sensors
Clean, modern interface built with Jetpack Compose
Offline-first foundation using Room database
Lightweight and privacy-conscious design
📍 Location Usage
SOS requests precise location access only to determine the user’s exact position during emergency scenarios.
Location data is not shared automatically and is intended solely for safety-related features.
🧱 Built With Modern Android Standards
SOS is developed using modern Android architecture practices:
Kotlin & Jetpack Compose
MVVM architecture
Dependency Injection (Hilt)
Kotlin Coroutines & StateFlow
Material 3 design system
🚀 Current Features (Implemented) ✅ Onboarding Flow
Multi-step onboarding using Jetpack Compose
Progress indicator across steps
User name collection with local persistence
Clear explanation of location permission usage
Runtime permission request for Precise Location
✅ App Entry Management
Uses DataStore (Preferences) to determine entry point:
First-time user → Onboarding
Returning user → Dashboard
Clean navigation using type-safe Compose Navigation
✅ Local Data Storage (Offline-First Foundation)
Room Database with:
User table (stores user name)
Locations table (for offline location storage)
Flow-based data observation
Repository + ViewModel separation
✅ Location Handling
Uses Google Fused Location Provider
High-accuracy location capture with timeout
Captures the best available location within a defined window
✅ Modern Android Stack
100% Jetpack Compose UI
MVVM Architecture
Hilt for dependency injection
Kotlin Coroutines & StateFlow
Material 3 theming (Light & Dark)
🧠 Architecture Overview
UI (Compose Screens)
↓
ViewModel (StateFlow)
↓
Repository
↓
Data Sources
├── Room (Offline Storage)
└── DataStore (App State)
This separation ensures:
Testability
Scalability
Clean state management
No business logic inside UI
🖼️ Screenshots (Current)
Welcome
Permission Explanation
Location Request
Permission Granted
🛠 Tech Stack
Language: Kotlin
UI: Jetpack Compose + Material 3
Architecture: MVVM
DI: Hilt
Local Storage: Room, DataStore
Async: Kotlin Coroutines, Flow
Location: Google Fused Location Provider
🔒 Permissions Used
ACCESS_FINE_LOCATION
Required to capture precise location during emergencies
Requested transparently during onboarding
🧪 Current Limitations
SOS button is UI only (no alert dispatch yet)
No emergency contact management
No background service for continuous tracking
No SMS / notification dispatch
No backend integration
📌 Planned Features (Next Milestones)
Satellite-based communication to reduce dependency on cell towers
SOS trigger logic
Emergency contact setup
Location sharing via SMS / notifications
Background location updates
Offline → online sync
Play Store–ready production release
- Clone the repository
- Open in Android Studio (latest stable)
- Sync Gradle
- Run on a physical device (location required)



