Skip to content

Repository files navigation

GeoSentinel

Disaster response & resource logistics on a 3D globe.

GeoSentinel identifies active disaster regions, locates nearby hospitals, and computes terrain-aware optimal routes between a disaster region and the best-matching hospitals. It scores every candidate path on distance, elevation gain, and terrain difficulty, not just geographic length.

license MIT

What it does

  1. Disaster identification — live UN GDACS event feed (earthquakes, cyclones, floods, volcanoes, wildfires, droughts) with a bundled offline snapshot when the feed is unreachable. Each region shows its type, coordinates, alert level, severity, and relevant briefing info.
  2. Hospital identification — curated global trauma-center database plus live OpenStreetMap (Overpass) facilities around the selected disaster. Hospitals appear as clear map icons.
  3. Terrain-aware optimal routing — candidate road routes (OSRM, keyless) are sampled and scored with an objective that combines path distance, total elevation gain, and slope-derived terrain difficulty (cost = km × (1 + difficulty × 0.35) + gain/100 × 0.8). Elevation comes from the keyless Open-Meteo elevation API.
  4. Route information — the user chooses how many routes to compute (1–5); each route is drawn on the globe with total length, elevation range/gain, max slope, terrain rating, and its destination hospital.
  5. Hospital capacity — clicking a hospital icon shows name, bed capacity, rating, phone number, coordinates, and current capacity status.
  6. Clean map interaction — Google Maps-style navigation controls (pan pad, compass, tilt, zoom, reset), keyless place search (Nominatim) that flies the globe to the selection, a disable-able vignette, and a clean-view mode that hides all panels.

The app starts directly on the main view, centered on Mumbai, India — no startup dialogs.

Quick start

npm install
npm run dev        # http://localhost:4173

Optional: copy .env.example to .env and add a GOOGLE_MAPS_API_KEY and/or CESIUM_ION_TOKEN for photorealistic 3D tiles. Without keys the app runs on the keyless satellite globe (Esri World Imagery / OSM).

Tests

npm test           # unit tests: routing math, hospital data, normalization
npm run build      # production build
npm run smoke      # headless-browser acceptance run (needs `npm run dev` up)

API surface

Only keyless public services plus two optional client-side map keys:

Concern Service Key
Globe / 3D tiles Cesium ion, Google Photorealistic 3D Tiles optional
Basemap fallback Esri World Imagery / OpenStreetMap none
Disaster data UN GDACS (+ bundled snapshot) none
Hospital data OpenStreetMap Overpass (+ curated DB) none
Elevation / terrain Open-Meteo elevation API none
Routing OSRM demo router none
Place search OpenStreetMap Nominatim none

Attribution for imagery providers is shown in the bottom-left credit line.

Stack

  • CesiumJS — 3D globe rendering
  • Vite + vite-plugin-cesium — build and dev server
  • Vanilla ES modules — no framework

License

MIT — see LICENSE.

About

Disaster response command center which calculates the most optimal path leading to the nearest hospital and resource center.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages