A full-stack web application that aggregates live disaster data from multiple government and public APIs, computes regional risk scores, and lets users check their own location for nearby danger — all on an interactive worldwide map.
API: https://crisismap-0lzu.onrender.com
CrisisMap monitors earthquakes, severe weather, and air quality in real time across every continent, then goes a step further than a typical data dashboard: it computes a composite risk score per region and lets any user type in a city to instantly see if there's active danger nearby.
Live worldwide dashboard — real-time earthquakes, air quality, and severe weather with computed risk zones
Location-based proximity search — type any city and instantly see active disasters nearby, with real calculated distances
Public disaster data already exists across USGS, NOAA, and other government sites — but it's scattered across separate tools, none of which tell you directly whether you are at risk right now. CrisisMap aggregates it into one place and adds the missing piece: a direct answer to "is anything dangerous near me?"
CrisisMap combines a FastAPI backend that pulls and normalizes data from three independent live sources with a React + Azure Maps frontend for visualization. Unlike a simple map overlay, it includes a custom-built scoring layer that weighs severity, recency, and compound risk (multiple disaster types overlapping in one area) to surface the regions that matter most right now.
- 🌐 Worldwide live data — earthquakes (USGS), severe weather alerts (NOAA/NWS), and air quality (Open-Meteo) across 6 continents
- 🧮 Regional risk scoring — a weighted algorithm combining severity, time-decay, and compound-risk detection, computed fresh from live data
- 📍 Check Your Area — type any city and instantly see active disasters within 300km, with real distances calculated
- 🗺️ Azure Maps integration — interactive, color-coded map with severity-based markers and detail popups
- 🔎 Multi-dimensional filtering — by disaster type, by continent/region, or by free-text location search
- ⚡ One-click live sync — pulls fresh data from all three sources simultaneously
- 📱 Responsive design — works across desktop and mobile
CrisisMap clusters all active disasters into ~10-degree geographic zones and scores each one from 0-100:
- Severity weighting — each event contributes 1-4 points based on severity (low → severe)
- Recency decay — events lose weight over 7 days, so a flood warning from 2 hours ago matters more than one from 6 days ago
- Compound risk multiplier — a zone with 2+ different disaster types active simultaneously gets a 1.2-1.5x multiplier, since simultaneous hazards compound real-world risk
This is a hand-engineered weighted-scoring algorithm, not a trained ML model — a deliberate choice for interpretability, since every score can be explained by exactly which events fed into it.
| Layer | Technologies |
|---|---|
| Frontend | React, TailwindCSS, Azure Maps Control SDK |
| Backend | FastAPI (Python), async data aggregation |
| Database | MongoDB Atlas |
| Cloud | Azure Maps (visualization), deployed on Render + Vercel |
| Live Data APIs | USGS Earthquake Feed, NOAA/NWS Alerts, Open-Meteo Air Quality & Geocoding |
| Testing | Python Unittest |
CrisisMap/
├── backend/
│ ├── server.py — FastAPI backend: live data ingestion, risk scoring, REST API
│ ├── requirements.txt — Backend dependencies
│ └── .env — Environment variables (not committed)
│
├── frontend/
│ ├── public/ — Static files
│ ├── src/
│ │ ├── components/ui/ — Reusable UI components
│ │ ├── hooks/ — Custom React hooks
│ │ ├── lib/ — Utility functions
│ │ └── App.js — Main application logic, map, and filters
│ ├── package.json — Frontend dependencies
│ └── .env — Frontend configuration (not committed)
│
├── tests/
│ ├── backend_test.py — Unit tests for backend routes
│ └── test_result.md — Test output summary
│
├── screenshots/ — README screenshots
│
└── README.md — This file
git clone https://github.com/ayesha1145/CrisisMap.git
cd CrisisMapcd backend
pip install -r requirements.txtCreate a .env file with:
MONGO_URL="your-mongodb-connection-string"
DB_NAME="crisismap_database"
CORS_ORIGINS="*"
AZURE_MAPS_KEY="your-azure-maps-key"
Run it:
python -m uvicorn server:app --reloadcd frontend
npm install --legacy-peer-depsCreate a .env file with:
REACT_APP_BACKEND_URL="http://127.0.0.1:8000"
Run it:
npm startcd tests
python backend_test.py- USGS Earthquake API — global, real-time, no key required
- NOAA/NWS Active Alerts — US severe weather (floods, tornadoes), no key required
- Open-Meteo Air Quality API — worldwide AQI, no key required
- Open-Meteo Geocoding API — powers the "Check Your Area" location search
- Wildfires currently use representative mock data — no free, no-key, real-time global wildfire API was integrated yet (candidate: NASA FIRMS)
- Severe weather alerts are US-only (NOAA/NWS is a US government service) — global coverage would require an additional source like GDACS
- Alerts are on-demand ("Check Your Area"), not push-based — a next step would be saved locations with automated email/SMS notifications when risk crosses a threshold
- Aggregates 3 independent live data sources into one normalized schema
- Custom risk-scoring algorithm with documented, explainable logic
- Full deployment pipeline: MongoDB Atlas → Render (backend) → Vercel (frontend)
- Distinct Azure integration (Azure Maps) from other projects in this portfolio, demonstrating range across Microsoft's cloud ecosystem
- Fork the repository
- Create a new branch:
git checkout -b feature-name - Commit your changes and open a pull request

