Skip to content

PavloICSA/planetpulse

Repository files navigation

Planet Pulse — The Earth's Vital Signs

Planet Pulse is an interactive web dashboard that treats Earth like a living organism. It combines a 3D globe, live environmental signals, lightweight forecasting, and operational alerts to highlight where ecological stress is rising now and what may happen next.

Try Planet Pulse

Visit Planet Pulse official page to test the application.

Highlights

  • 3D rotating Earth built with Three.js
  • Full-planet grid monitoring for 4 layers:
    • Air Pollution
    • Deforestation Pressure
    • Water Stress
    • Ocean Temperature
  • Near-term forecasting (7-day horizon) with model selection:
    • Moving Average
    • Double Exponential Smoothing (DES)
    • Damped Holt
    • Triple Exponential Smoothing (TES)
    • Auto mode with fallback strategy
  • Trend analysis using Mann-Kendall test:
    • S, Var(S), zMK
    • Interpreted trend direction text
  • Forecast quality metrics:
    • R2, RMSE, MAE, MAPE
  • Global Threat Leaderboard (Top 10 high-risk cells)
  • Operational Alerts with one-click focus on globe + leaderboard row
  • Solution Mode (what-if sliders + projected improvement + action guidance)
  • Day/Night Earth texture auto-switch based on local time
  • Theme switcher (Dark default + Light)
  • Bilingual UI (English default + Ukrainian toggle)

Why this project is useful

Most dashboards show historical conditions only. Planet Pulse adds short-term predictive behavior and interpretable risk outputs, which helps users move from passive monitoring to early response.

Tech Stack

  • Frontend: HTML, CSS, vanilla JavaScript (ES modules)
  • 3D visualization: Three.js
  • Charts: Chart.js (UMD)
  • Data APIs: Open-Meteo (air/weather/marine)
  • Forecasting & analytics: custom JS implementations (MA, DES, Damped Holt, TES, Mann-Kendall, error metrics)

Data Model and Layer Notes

  • The app uses a global grid (lat/lon cells) rather than a small hardcoded city list.
  • Each layer is fetched per grid cell with controlled concurrency and in-memory caching.
  • If an upstream data request fails or returns insufficient points, the app uses a synthetic fallback series to keep the UX responsive.
  • Footer and notice fields indicate current data/fallback status.

Forecasting Logic

For each selected location/cell:

  1. Historical series is prepared.
  2. Forecast is generated with selected model (or Auto mode).
  3. Negative forecast outputs are clamped to 0 for physical realism.
  4. Metrics (R2, RMSE, MAE, MAPE) are computed on historical fit behavior.
  5. Mann-Kendall statistics are computed and shown near forecast chart.

Localization

  • Languages: English (en) and Ukrainian (uk)
  • Header language toggle switches all major UI content.
  • Geographical area names are localized (including coordinate suffixes, e.g. N/S/E/W -> Пн/Пд/Сх/Зх).

Day/Night and Theme

  • Earth texture switches automatically:
    • Day texture: public/earth-day.jpg
    • Night texture: public/earth-night.jpg
  • App theme supports dark/light mode and persists user preference in localStorage.

Run Locally

Because this project uses ES modules and external CDN assets, run it with a local HTTP server.

Option 1: Python

cd /Volumes/D/Hackathon2026
python3 -m http.server 5173

Open: http://localhost:5173

Option 2: Node (serve)

cd /Volumes/D/Hackathon2026
npx serve -l 5173

Open: http://localhost:5173

Project Structure

/Volumes/D/Hackathon2026
├── index.html
├── styles.css
├── app.js
├── public/
│   ├── earth-day.jpg
│   └── earth-night.jpg
├── what_it_does.html
├── how_it_works.html
├── terms_of_use.html
├── privacy_policy.html
├── developer_info.html
└── data/samples/
    ├── deforestation.json
    ├── water_stress.json
    └── ocean_temp.json

Known Limitations

  • Some strict-source datasets (deforestation/water) may require short-lived tokens or paid tiers for sustained production usage.
  • Current forecasting is intentionally lightweight for browser speed and hackathon practicality.
  • Fallback synthetic series are used when live data is unavailable.

Production Hardening (Recommended Next Steps)

  1. Add a backend proxy for API key management and token refresh.
  2. Persist snapshots in a time-series store for stable historical baselines.
  3. Replace proxy indicators with strict-source official datasets where licensing allows.
  4. Add test coverage for forecast and trend modules.
  5. Add CI checks for linting, formatting, and regression validation.

Data Sources

License

This project is licensed under the MIT License. See LICENSE for details.

About

Web app to detect global ecological threats

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors