Skip to content

Repository files navigation

Zero Trap logo

Zero Trap

Emergency help, one tap away.

A community-powered mobile emergency assistance network for faster, safer, more connected help.

GitHub stars License Last commit

React Native 0.76.9 Expo SDK 52 Firebase 10.7.1 Android ready

Overview  •  Capabilities  •  Setup  •  Security  •  Contributing


🎯 Overview

Emergencies are time-sensitive. Zero Trap gives people a focused way to request support, share a location, communicate with helpers, and coordinate assistance through one mobile experience.

Mission: Make emergency assistance more connected, more responsive, and more accessible.

✨ Capabilities

Request and respond

  • Create and track emergency help requests.
  • Discover nearby opportunities to help.
  • Support internet and short-range Bluetooth-oriented flows.
  • Preserve request history with explicit active, accepted, completed, and cancelled states.

Stay connected

  • Share location with the appropriate emergency flow.
  • Use Google Maps and Android location services.
  • Communicate through real-time, timestamped conversations.
  • Receive emergency-related push notifications.

Build trust

  • Firebase Authentication and profile management.
  • Helping scores and community activity.
  • Privacy policy and terms screens.
  • User reporting and blocking foundations.

🧭 Product flow

  REQUEST HELP
       │
       ▼
  SHARE LOCATION ──────► NEARBY HELPERS DISCOVER THE REQUEST
       │                                  │
       └──────── REAL-TIME CHAT ◄─────────┘
                          │
                          ▼
                    COORDINATE SUPPORT

🛠 Built with

  • Mobile: React Native 0.76.9, Expo SDK 52, JavaScript
  • Navigation: React Navigation
  • Cloud: Firebase Authentication, Cloud Firestore, Firebase Storage
  • Maps and device services: React Native Maps, Expo Location, Expo Device, Expo Task Manager
  • Engagement: Expo Notifications, AsyncStorage, Expo Image Picker
  • Delivery: Expo Application Services (EAS)

📁 Project structure

ZeroTrapApp/
├── assets/             # Branded icons, splash artwork, and static resources
├── components/         # Reusable interface components
├── navigation/         # Navigation configuration
├── screens/            # Application screens
├── services/           # Firebase, location, notification, and storage services
├── utils/              # Shared utilities
├── scripts/            # Administrative utilities
├── App.js              # Application entry point
├── app.config.js       # Expo configuration and private environment/build overrides
├── eas.json            # EAS build profiles
├── firestore.rules     # Firestore access rules
├── firebaseConfig.js   # Environment-based Firebase client setup
└── package.json        # Dependencies and npm scripts

🚀 Setup

Prerequisites

  • Node.js and npm
  • Git
  • Android Studio with an emulator or a physical Android device
  • A Firebase project with Authentication and Firestore enabled
  • A restricted Google Maps API key
  • An Expo / EAS account for device builds

Install and run

git clone https://github.com/tracolerd/Zero-Trap---Android-App.git
cd Zero-Trap---Android-App
npm install
npx expo start

Press a to open Android, or use an appropriate Expo development client.

Configure Firebase safely

The repository intentionally contains no live Firebase, Google Maps, Android, or EAS credentials.

  1. Copy google-services.example.json to google-services.json locally and fill it with the Android configuration downloaded from Firebase Console.
  2. Create a local .env.local file with the Firebase web values:
EXPO_PUBLIC_FIREBASE_API_KEY=your_firebase_web_api_key
EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
EXPO_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.firebasestorage.app
EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
EXPO_PUBLIC_FIREBASE_APP_ID=your_firebase_web_app_id
  1. Configure the Google Maps key and EAS project in your private build environment:
EXPO_PUBLIC_GOOGLE_MAPS_API_KEY=your_restricted_maps_key
EXPO_PUBLIC_EAS_PROJECT_ID=your_eas_project_id
  1. Restrict every key by Android package, signing certificate, API, quota, and environment.

Location, background tasks, notifications, camera access, and maps should be tested on a physical Android device before release.

📜 Commands

npm start                 # Start the Expo development server
npm run android           # Run the Android development workflow
npm run ios               # Run the iOS workflow where supported
npm run web               # Start the web workflow
npx expo-doctor           # Validate Expo configuration and dependencies
npx expo export --platform android --clear
npx expo export --platform web --clear

EAS builds

npx eas login
npx eas build:configure
npx eas build --platform android

Use the preview profile for an installable APK and production for an Android App Bundle.

🔐 Security

Zero Trap handles location, authentication, communication, and emergency-related data. Please:

  • Never commit google-services.json, service-account keys, .env files, keystores, or private API credentials.
  • Review firestore.rules before deploying production data.
  • Use a private release/upload keystore and configure release certificate restrictions.
  • Keep Firebase and Google Cloud keys limited to the APIs and apps that need them.
  • Minimize sensitive data collection and retention.
  • Report vulnerabilities privately to the maintainer instead of publishing exploit details.

🛣 Roadmap

  • Authentication and profile management
  • Location-aware emergency requests
  • Map integration and real-time communication foundation
  • Firebase / Firestore integration
  • Expo notification integration
  • Refine push-notification delivery
  • Improve offline emergency communication
  • Expand helper matching and reputation
  • Increase automated test and CI coverage
  • Complete production hardening and security review

🤝 Contributing

Contributions, bug reports, and thoughtful product ideas are welcome.

git checkout -b feature/your-feature
git add .
git commit -m "feat: describe your change"
git push origin feature/your-feature

Open a pull request against main with a concise summary, testing notes, and screenshots for user-facing changes.

👨‍💻 Maintainer

Nurul Faiyaz · GitHub · LinkedIn

📄 License

This project is distributed under the license included in LICENSE.


Built with purpose for people who need help when it matters most.



⭐ Star the repository if you find the project useful.

About

This android app is about sharing locations in emergency.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages