A community-powered mobile emergency assistance network for faster, safer, more connected help.
Overview • Capabilities • Setup • Security • Contributing
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.
- 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.
- 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.
- Firebase Authentication and profile management.
- Helping scores and community activity.
- Privacy policy and terms screens.
- User reporting and blocking foundations.
REQUEST HELP
│
▼
SHARE LOCATION ──────► NEARBY HELPERS DISCOVER THE REQUEST
│ │
└──────── REAL-TIME CHAT ◄─────────┘
│
▼
COORDINATE SUPPORT
- 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)
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
- 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
git clone https://github.com/tracolerd/Zero-Trap---Android-App.git
cd Zero-Trap---Android-App
npm install
npx expo startPress a to open Android, or use an appropriate Expo development client.
The repository intentionally contains no live Firebase, Google Maps, Android, or EAS credentials.
- Copy
google-services.example.jsontogoogle-services.jsonlocally and fill it with the Android configuration downloaded from Firebase Console. - Create a local
.env.localfile 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- 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- 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.
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 --clearnpx eas login
npx eas build:configure
npx eas build --platform androidUse the preview profile for an installable APK and production for an Android App Bundle.
Zero Trap handles location, authentication, communication, and emergency-related data. Please:
- Never commit
google-services.json, service-account keys,.envfiles, keystores, or private API credentials. - Review
firestore.rulesbefore 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.
- 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
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-featureOpen a pull request against main with a concise summary, testing notes, and screenshots for user-facing changes.
Nurul Faiyaz · GitHub · LinkedIn
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.