DisasterWatch is a comprehensive mobile application designed to help communities prepare for, monitor, and respond to natural and man-made disasters. Built with React Native and Expo, it provides real-time disaster tracking, reporting capabilities, and emergency response coordination tools.
-
🗺️ Real-time Disaster Feed
- Interactive map interface with disaster markers
- Filter disasters by type, severity, and location
- Real-time updates and push notifications
-
📱 Disaster Reporting
- User-generated incident reports
- Photo and video upload capabilities
- Location-based reporting
- Offline submission support
-
🚨 Emergency Services
- Emergency contact directory
- One-tap emergency calling
- Nearest emergency facility locator
- Emergency protocols and guidelines
-
🔔 Smart Notifications
- Customizable alert preferences
- Geofenced notifications
- Severity-based filtering
- Silent hours configuration
-
👤 User Features
- Profile management
- Emergency contact list
- Personal safety checklist
- Activity history
-
🌡️ Weather Integration
- Real-time weather data
- Natural disaster predictions
- Severe weather alerts
- Historical weather patterns
- React Native (v0.72+)
- Expo SDK 49+
- NativeWind (TailwindCSS for React Native)
- React Navigation v6
- React Context API
- AsyncStorage
- Expo SecureStore
- Redux Toolkit (for complex state)
- React Native Maps
- Expo Location
- Google Maps API
- Expo Notifications
- Firebase Cloud Messaging
- Axios
- React Query
- WebSocket for real-time updates
- Node.js (v16.0.0 or higher)
- npm (v8.0.0 or higher) or yarn (v1.22.0 or higher)
- Expo CLI (
npm install -g expo-cli) - Xcode (for iOS development, Mac only)
- Android Studio (for Android development)
- Git
-
Clone the repository
git clone https://github.com/yourusername/DisasterWatch.git cd DisasterWatch -
Install dependencies
npm install # or yarn install -
Environment Setup
cp .env.example .env
Edit
.envwith your API keys and configuration:- GOOGLE_MAPS_API_KEY
- WEATHER_API_KEY
- FIREBASE_CONFIG
- API_BASE_URL
-
Start Development Server
npm start # or yarn start
npm start- Start the Expo development servernpm run ios- Run on iOS simulatornpm run android- Run on Android emulatornpm run web- Run in web browsernpm test- Run test suitenpm run lint- Run ESLintnpm run typescript- Run TypeScript checksnpm run build:android- Build Android releasenpm run build:ios- Build iOS release
- ESLint configuration extends React Native recommended settings
- Prettier for code formatting
- Husky for pre-commit hooks
- Commitlint for conventional commits
- Jest for unit and integration tests
- React Native Testing Library
- E2E testing with Detox
- React Native Debugger
- Flipper support
- Chrome DevTools integration
- Update
app.jsonversion - Generate release keystore
- Configure
app.jsonwith keystore details - Run
npm run build:android
- Update
app.jsonversion - Configure certificates in Apple Developer Portal
- Update provisioning profiles
- Run
npm run build:ios
- Fork the repository
- 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
Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.
For support, email [email protected] or join our Slack channel.
DisasterWatch is a comprehensive application designed to provide real-time disaster alerts, reporting capabilities, and emergency contacts.
To install the project locally, follow these steps:
- Clone the repository:
git clone https://github.com/DisasterWatchHQ/DisasterWatch.git
- Navigate to the project directory:
cd DisasterWatch - Install dependencies:
npm install
- Run the application:
npx expo start
Detailed usage instructions and examples will be provided here.
- Real-time disaster alerts
- Interactive maps
- User profiles and resource pages
- Theming and customization options
The project uses several dependencies, including but not limited to:
- @expo/metro-runtime
- @react-native-async-storage/async-storage
- @react-native-community/checkbox
- @react-native-community/geolocation
- @react-native-picker/picker
- @react-navigation/native
- axios
- expo
- expo-camera
- expo-constants
- expo-image-picker
- expo-linking
- expo-location
- expo-notifications
- expo-router
- expo-secure-store
- expo-status-bar
- nativewind
- react
- react-dom
- react-native
- react-native-appwrite
- react-native-dotenv
- react-native-dropdown-picker
- react-native-elements
- react-native-geocoding
- react-native-get-random-values
- react-native-google-places-autocomplete
- react-native-maps
- react-native-reanimated
- react-native-safe-area-context
- react-native-screens
- react-native-url-polyfill
- react-native-vector-icons
- react-native-web
- react-navigation
- react-redux
- redux
- tailwindcss
- uuid
For a complete list, refer to the package.json file.
Here are some of the recent notable commits:
- feat: pushing update
- feat: improved the button component
- feat: made the profile page skeloton
- refactor: changed the start page and add animations
- feat: hide the back button on profile page
For more commits, visit the commit history.
This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.
For any queries or concerns, please contact the project maintainers.