TerraPulse ๐ŸŒ

The planet, live. From every wildfire on Earth to the air in your next breath.

Live demo: https://terrapulse-azure.vercel.app GitHub: https://github.com/saikiranreddy18/terrapulse Hackathon: OregonHacks 2026 ยท Theme: Nature + Tech


Inspiration

Nature usually shows up in our feeds as either a distant headline or a number on a weather app. We wanted to close that gap: what if you could see the whole planet breathing โ€” every earthquake, wildfire, and cyclone happening right now โ€” and then trace a line straight back to the air entering your own lungs? The theme "Nature + Tech" felt like an invitation to treat Earth as a single living patient and build its bedside monitor.

What it does

TerraPulse is a live 3D globe of Earth's vital signs, with zero mock data:

  • Every earthquake of the last 24 hours (or 7 days) pulses on the globe โ€” magnitude, depth, and tsunami flags from the USGS live feed, with a magnitude filter and an activity sparkline.
  • Every wildfire, cyclone, volcano, and iceberg NASA EONET is currently tracking is rendered as an animated marker โ€” flickering flames, spinning cyclone spirals, glowing volcano vents โ€” each stamped with its last-update time and official source (irwin.doi.gov, nhc.noaa.gov, metoc.navy.mil).
  • Click any event and a detail drawer opens with its facts, distance from you, the official government record, the latest real news articles about that exact event, and one-click video coverage.
  • Your corner of the planet: live AQI, PM2.5, UV, and temperature where you're sitting โ€” plus a city search that flies the globe anywhere and compares that city's air with yours.

How we built it

One HTML file and one serverless function. globe.gl (three.js) renders the planet; USGS, NASA EONET, and Open-Meteo provide the data โ€” all free, all keyless. The animated event markers are pure CSS positioned on the globe with occlusion culling. For news, we wrote a tiny Vercel serverless proxy that turns Google News RSS into JSON on the same origin, with GDELT as a fallback. Deployed on Vercel; no build step, no database, no API keys anywhere.

Challenges we ran into

  • "Is this data even real?" We doubted our own app when a cyclone on the globe had no YouTube coverage. So we audited the feeds: Cyclone Hernan turned out to be Navy Joint Typhoon Warning Center storm EP-08-2026, updated a day ago. Small rural wildfires just don't make YouTube. We fixed the trust problem instead โ€” every event now shows its update time and official source domain in the UI.
  • News APIs kept dying on us. GDELT went down mid-build, and CORS proxies were blocked or flaky. The fix was owning the problem: our own same-origin serverless proxy.
  • Ad-blockers silently killed our news box because the endpoint was called /api/news. Renamed to /api/coverage. Lesson learned the hard way.
  • 3D quirks: duplicate three.js instances, a missing API in an older globe.gl version that silently broke a whole layer, markers painting over the UI panels, and quake points rendering as giant pillars instead of glowing dots.
  • Vercel's SSO protection shipped our "public" link locked โ€” every visitor got a login wall until we found and disabled it.

Accomplishments that we're proud of

  • A genuinely live product โ€” during testing, a fresh M5.8 earthquake appeared on the globe while we were verifying data. Nothing is faked or cached from a demo dataset.
  • The click-to-news pipeline: clicking a small California fire surfaces actual Sacramento Bee articles about that exact fire, seconds old to days old.
  • The whole thing is one HTML file + one function โ€” no keys, no backend, nothing to break on stage.
  • A UI we'd ship: mission-control hierarchy, animated markers, glassmorphism panels, and it all runs at 60fps in a browser tab.

What we learned

  • Free public APIs (USGS, NASA, Open-Meteo) are shockingly good โ€” the hard part isn't getting data, it's proving to users it's real. Freshness stamps and source attribution turned skepticism into trust.
  • Every external dependency will fail during a hackathon. Timeouts, fallbacks, and graceful degradation aren't polish โ€” they're survival.
  • CSS can carry an entire visual-effects layer (fire! cyclones!) that we assumed would need WebGL shaders.

What's next for TerraPulse

  • Embedded video coverage in the drawer (YouTube Data API) and richer per-event timelines.
  • Historical playback โ€” scrub through a week of the planet's pulse like a heart-rate strip.
  • Alerts: "a storm system is within 500 km of you" push notifications, and shareable deep links to any event.
  • More vital signs: floods and droughts from EONET, sea-surface temperature, COโ‚‚ trends โ€” and a public API so others can build on the same feed.

Built With

  • and-free-public-apis:-usgs-earthquakes
  • avascript
  • google
  • html/css
  • nasa-eonet
  • news
  • open-meteo-air-quality
  • three.js-+-globe.gl-(3d-globe)
  • vercel-serverless-functions
Share this project:

Updates

Submission history