Skip to content

Repository files navigation

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

▶️ How to Run

  1. Clone the repository
  2. Open in Android Studio (latest stable)
  3. Sync Gradle
  4. Run on a physical device (location required)

About

SOS is a personal safety app that prepares your device to share precise location during emergencies, with a clear onboarding flow and privacy-focused design.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages