Disaster Management & Response Platform
Suraksha Setu helps authorities efficiently issue emergency alerts, coordinate evacuations, manage disaster response, and support affected communities during recovery and rehabilitation. The project focuses on building a faster, safer, and more coordinated disaster-response ecosystem, bridging the gap between authorities and citizens during critical situations.
π₯ 1st Runner-Up β CodeRush 2.0
Team Apex! proudly secured the 1st Runner-Up position at CodeRush 2.0, organized by Yeshwantrao Chavan College of Engineering (YCCE), Nagpur.
| Project Name | Suraksha Setu |
| Team Name | Team Apex! |
| Team Leader | Aditya Singh |
- Interactive horizontal scrubber driven by satellite keyframes (capturing event onset, data gaps, and peak hazard footprints).
- Dynamic Confidence Indicators (numeric 0.0β1.0 and visual tags).
- Data-Gap Banner Warning explicitly alerting users when satellite coverage is unavailable and models interpolate growth.
- Rule-based decision generator (
src/lib/planGenerator.js) calculating nearest safe relief shelters with available capacity and routing vectors. - Human-in-the-Loop Framework: Action cards require explicit commander review with Approve, Edit Directives, or Reject choices. Unapproved recommendations remain strictly labeled as draft directives.
- Calculates flooded surface area in hectares.
- Identifies at-risk hospitals and submerged road networks.
- Timestamped log capturing satellite timeline scrubbing, plan generation, human approval actions, and emergency alert dispatches.
- Minimal Express backend endpoint (
POST /api/send-alert) for transmitting emergency transactional alerts to district response command nodes.
| Data Type | Source |
|---|---|
| Satellite Flood Extents | Dartmouth Flood Observatory (DFO) / Sentinel-1 SAR observations |
| Infrastructure (Hospitals, Shelters, Roads, Rivers) | OpenStreetMap via Overpass API, under the Open Database License (ODbL) |
| Operational Datasets | Reservoir levels (sensor_log.json) and shelter capacity limits (shelters_capacity.json), integrated as live operational data feeds |
- Frontend: React (v18), Vite, Tailwind CSS, Lucide Icons, Recharts
- Geospatial & Mapping: Leaflet,
react-leaflet,@turf/turf - Backend: Node.js, Express, Nodemailer
npm installnpm run dev:all- Frontend App:
http://localhost:5173 - Express Backend API:
http://localhost:3001
npm run buildSee DEPLOYMENT.md for the full hosting walkthrough.
flowchart TB
USER["Emergency Commander"]
subgraph FRONTEND["React + Vite Command Interface"]
CC["Command Centre"]
MAP["Command Map"]
RP["Response Planner"]
AC["Alert Centre"]
AL["Activity Log"]
TS["Timeline Scrubber"]
end
subgraph DATA["Historical & Operational Data"]
SAT["Historical Satellite Flood Extents"]
INFRA["Infrastructure GeoJSON<br/>Hospitals / Shelters / Roads / Rivers"]
SENSOR["Synthetic Sensor Data"]
CAP["Shelter Capacity Data"]
TIMELINE["Event Timeline"]
end
subgraph ENGINE["Decision & Analysis Layer"]
IMPACT["Turf.js Impact Analysis"]
PLAN["Rule-Based Plan Generator"]
CONF["Confidence / Data-Gap Logic"]
AUDIT["Activity Logger"]
end
subgraph BACKEND["Express Backend"]
API["POST /api/send-alert"]
MAIL["Transactional Alert Service"]
end
USER --> CC
USER --> MAP
USER --> RP
USER --> AC
USER --> AL
TS --> TIMELINE
TIMELINE --> CONF
SAT --> MAP
SAT --> CONF
INFRA --> MAP
INFRA --> IMPACT
SENSOR --> IMPACT
CAP --> PLAN
INFRA --> PLAN
IMPACT --> PLAN
CONF --> CC
IMPACT --> CC
PLAN --> RP
RP --> AUDIT
TS --> AUDIT
AC --> API
API --> MAIL
AUDIT --> AL
flowchart TD
START["Disaster Event"] --> DATA["Load Data"]
DATA --> SAT["Satellite Flood Extent"]
DATA --> INFRA["Infrastructure Data"]
DATA --> SENSOR["Sensor / Reservoir Data"]
DATA --> SHELTER["Shelter Capacity Data"]
SAT --> TIME["Timeline Scrubber"]
TIME --> CHECK{"Satellite Data Available?"}
CHECK -->|Yes| FLOOD["Display Observed Flood Extent"]
CHECK -->|No| GAP["Display Data-Gap Warning"]
GAP --> INTERP["Interpolate Flood Growth"]
INTERP --> CONF["Lower Confidence"]
FLOOD --> CONF2["Calculate Confidence"]
CONF --> IMPACT["Geospatial Impact Analysis"]
CONF2 --> IMPACT
IMPACT --> AREA["Flooded Area"]
IMPACT --> HOSP["At-Risk Hospitals"]
IMPACT --> ROADS["Affected Roads"]
AREA --> PLAN["Generate Response Plan"]
HOSP --> PLAN
ROADS --> PLAN
SHELTER --> PLAN
PLAN --> ROUTE["Find Suitable Shelters<br/>and Routing Options"]
ROUTE --> REVIEW{"Commander Review"}
REVIEW -->|Edit| EDIT["Edit Directives"]
EDIT --> REVIEW
REVIEW -->|Reject| REJECT["Reject Recommendation"]
REVIEW -->|Approve| APPROVE["Approve Directive"]
APPROVE --> ALERT["Emergency Alert"]
ALERT --> API["Express Alert API"]
API --> DISPATCH["Dispatch to Response Node"]
REJECT --> LOG["Audit Activity"]
DISPATCH --> LOG
REVIEW --> LOG
TIME --> LOG
LOG --> ACTIVITY["Activity Audit Stream"]
flowchart LR
DATA["Flood + Infrastructure<br/>Data"]
DATA --> ANALYSIS["Impact Analysis"]
ANALYSIS --> ENGINE["Rule-Based<br/>Decision Generator"]
ENGINE --> DRAFT["Draft Response Directive"]
DRAFT --> REVIEW["Emergency Commander"]
REVIEW --> DECISION{"Commander Decision"}
DECISION -->|Approve| APPROVED["Approved Directive"]
DECISION -->|Edit| EDIT["Edit Directive"]
DECISION -->|Reject| REJECTED["Rejected Directive"]
EDIT --> REVIEW
APPROVED --> ALERT["Dispatch Emergency Alert"]
REJECTED --> AUDIT["Audit Log"]
ALERT --> AUDIT
DRAFT -.->|"Never automatically executed"| ALERT
sequenceDiagram
actor Commander
participant UI as Timeline Scrubber
participant Data as Historical Dataset
participant Analysis as Impact Analysis
participant Map as Command Map
participant Audit as Activity Logger
Commander->>UI: Select historical date
UI->>Data: Request keyframe
alt Satellite data available
Data-->>UI: Observed flood extent
UI->>Analysis: Calculate impact
Analysis-->>Map: Flood extent + affected assets
Map-->>Commander: Display observed conditions
else Data gap
Data-->>UI: No satellite coverage
UI-->>Commander: Show data-gap warning
UI->>Analysis: Interpolate flood growth
Analysis-->>Map: Estimated conditions
Map-->>Commander: Display lower-confidence estimate
end
UI->>Audit: Record timeline interaction
Analysis->>Audit: Record analysis result
.
βββ public/data/
β βββ hospitals.geojson # Named hospitals in Alappuzha/Kottayam
β βββ shelters.geojson # Schools & community centres
β βββ roads.geojson # Highway & secondary road network
β βββ rivers.geojson # Waterways & river vectors
β βββ flood_20180814.geojson # Aug 14 satellite flood extent
β βββ flood_20180817.geojson # Aug 17 peak flood extent
β βββ event_timeline.json # Keyframe scrubber dataset
β βββ sensor_log.json # Hydro gauge & dam capacity feed
β βββ shelters_capacity.json # Capacity metrics & facility specs
βββ src/
β βββ components/
β β βββ ActivityFeedItem.jsx
β β βββ AlertComposer.jsx
β β βββ ConfidenceBadge.jsx
β β βββ DataGapBanner.jsx
β β βββ LayerToggle.jsx
β β βββ MapView.jsx
β β βββ Navbar.jsx
β β βββ PlanCard.jsx
β β βββ TimelineScrubber.jsx
β βββ lib/
β β βββ activityLogger.js # Shared audit logger context & hook
β β βββ impactEstimate.js # Turf.js spatial analysis
β β βββ planGenerator.js # Decision support algorithm
β βββ pages/
β β βββ ActivityLog.jsx
β β βββ AlertCentre.jsx
β β βββ CommandCentre.jsx
β β βββ CommandMap.jsx
β β βββ ResponsePlanner.jsx
β βββ state/
β β βββ AppContext.jsx # Global application state
β βββ App.jsx
β βββ main.jsx
β βββ index.css
βββ server/
β βββ index.js # Express server entry point
β βββ routes/sendAlert.js # POST /api/send-alert handler
β βββ .env.example
βββ package.json
βββ README.md