ResQ is a robust, full-stack mobile safety application meticulously designed to provide immediate assistance to women during emergencies. Leveraging the power of modern mobile technology, ResQ empowers users with a discreet and effective tool for personal safety. With a single Panic Button tap, the app instantly dispatches an SMS containing the user's live location to pre-registered emergency contacts, ensuring help is always just a second away.
Empowering safety with one tap. Help is just a second away.
ResQ aims to provide quick, reliable, and discreet emergency assistance. It allows users to save trusted contacts, manage their emergency details, and instantly trigger alerts with real-time location.
- One-Tap Panic Button: Instantly trigger an emergency alert.
- Live Location Sharing: Sends real-time GPS coordinates via SMS to emergency contacts.
- Emergency Contact Management: Add, edit, and prioritize trusted contacts.
- Secure User Authentication: Implements JWT (JSON Web Token) for secure user registration and login.
- Personal Profile Management: Users can store critical medical information, allergies, blood group, and other vital details for first responders.
- Intuitive User Interface: A clean, user-friendly design built with React Native.
- Backend Integration: Seamless communication with a dedicated backend for data persistence and real-time updates.
ResQ operates on a simple yet effective mechanism to ensure rapid response:
- User Registration/Login: Users securely register or log in to the application using JWT authentication, ensuring personalized and secure access.
- Emergency Contact Setup: Users can easily add, edit, and designate primary emergency contacts within their profile settings.
- Panic Button Activation: Upon pressing the "Panic Button":
- A subtle ripple animation provides immediate visual feedback to the user.
- The app retrieves the user's current live GPS location.
- An SMS containing the live location link (e.g., Google Maps link) is sent to all pre-registered emergency contacts.
- The user's last known location and emergency status are updated in the backend database.
- Profile Management: Users can update their personal and medical information, which can be crucial for emergency services.
---
ResQ is built using a modern, robust technology stack, primarily focused on JavaScript for both frontend and backend development.
- React Native: A JavaScript framework for building native mobile apps.
- Expo: A framework and platform for universal React applications, simplifying development and deployment.
- React Navigation: For handling navigation and routing within the app.
@react-native-async-storage/async-storage: Persistent key-value storage for React Native.axios: Promise-based HTTP client for making API requests to the backend.@expo/vector-icons: Pre-made icons for a richer UI.@react-native-picker/picker: Native select/picker component.
(Assumed based on project structure and dependencies, typically Node.js with Express)
- Node.js: JavaScript runtime for server-side logic.
- Express.js: A fast, unopinionated, minimalist web framework for Node.js.
- MongoDB (or similar NoSQL DB): For storing user data, emergency contacts, location history, and profile information.
- JWT (JSON Web Tokens): For secure authentication and authorization.
- Twilio (or similar SMS Gateway API): For sending SMS messages with live location. (This would be an external dependency for the backend)
To get ResQ up and running on your local machine, follow these steps:
Make sure you have the following installed:
git clone https://github.com/kankaa16/ResQ.git
cd ResQNavigate to the root directory of the cloned repository and install dependencies:
npm install
# or
yarn installThe backend folder suggests a separate server. You'll need to set up the backend server to handle user authentication, contact management, and location updates.
-
Navigate into the
backenddirectory:cd backend -
Install backend dependencies:
npm install # or yarn install -
Environment Variables: Create a
.envfile in thebackenddirectory based on a.env.example(if provided, otherwise create one) and configure necessary environment variables such as:PORT=5000(or your desired port)MONGO_URI=mongodb://localhost:27017/resq_db(your MongoDB connection string)JWT_SECRET=your_jwt_secret_key
-
Start the backend server:
npm start # or yarn startThe backend server should now be running, typically on
http://localhost:5000.
From the root directory of the repository (where package.json for the frontend is located):
expo startThis will open a new tab in your browser with Expo Dev Tools. You can then:
- Scan the QR code with the Expo Go app on your phone.
- Run on an Android emulator (
akey in terminal). - Run on an iOS simulator (
ikey in terminal - macOS only).
feature/theme-toggle
ResQ now includes a Dark/Light Theme Toggle for a better user experience.
Details:
- Users can switch between dark mode and light mode from the settings screen.
- The app remembers your preference even after restarting.
- Enhances visibility and reduces eye strain in different lighting conditions.
Usage:
- Go to the Settings screen.
- Tap the Theme Toggle switch to change between Dark and Light mode.
- Enjoy the interface in your preferred theme.
Benefits:
- Improves usability and accessibility.
- Offers a modern, comfortable UI experience.
- Shows attention to user personalization in app design.
Once the app is running and the backend server is active:
- Register/Login: Create a new account or log in with existing credentials.
- Add Emergency Contacts: Navigate to the contacts section and add phone numbers of your trusted contacts.
- Update Profile: Fill in your personal and medical information in the profile section.
- Test the Panic Button: In a safe environment, tap the "Panic Button" to simulate an emergency. Verify that your emergency contacts receive the SMS with your live location.
import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import LoginScreen from './screens/LoginScreen';
import RegisterScreen from './screens/RegisterScreen';
import HomeScreen from './screens/HomeScreen';
import ProfileScreen from './screens/ProfileScreen';
import ContactsScreen from './screens/ContactsScreen';
const Stack = createNativeStackNavigator();
export default function App() {
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="Login">
<Stack.Screen name="Login" component={LoginScreen} options={{ headerShown: false }} />
<Stack.Screen name="Register" component={RegisterScreen} options={{ headerShown: false }} />
<Stack.Screen name="Home" component={HomeScreen} options={{ title: 'ResQ' }} />
<Stack.Screen name="Profile" component={ProfileScreen} options={{ title: 'My Profile' }} />
<Stack.Screen name="Contacts" component={ContactsScreen} options={{ title: 'Emergency Contacts' }} />
{/* Add more screens as needed */}
</Stack.Navigator>
</NavigationContainer>
);
}The backend API handles all data persistence and communication for the ResQ app. Key endpoints would typically include:
- Authentication:
POST /api/auth/register: User registration.POST /api/auth/login: User login.
- User Profile:
GET /api/users/profile: Retrieve user profile.PUT /api/users/profile: Update user profile (medical info, etc.).
- Emergency Contacts:
GET /api/contacts: Retrieve all emergency contacts for the user.POST /api/contacts: Add a new emergency contact.PUT /api/contacts/:id: Update an existing contact.DELETE /api/contacts/:id: Delete a contact.
- Emergency Trigger:
POST /api/emergency/panic: Trigger the panic alert, send SMS, and update location.POST /api/emergency/location-update: Update user's live location.
For detailed API specifications (request/response formats, authentication requirements), please refer to the README.md file within the backend/ directory (if available) or the server's source code.
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2025 kankaa16
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is






