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.
Visit Planet Pulse official page to test the application.
- 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)
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.
- 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)
- 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.
For each selected location/cell:
- Historical series is prepared.
- Forecast is generated with selected model (or Auto mode).
- Negative forecast outputs are clamped to
0for physical realism. - Metrics (R2, RMSE, MAE, MAPE) are computed on historical fit behavior.
- Mann-Kendall statistics are computed and shown near forecast chart.
- 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->Пн/Пд/Сх/Зх).
- Earth texture switches automatically:
- Day texture:
public/earth-day.jpg - Night texture:
public/earth-night.jpg
- Day texture:
- App theme supports dark/light mode and persists user preference in
localStorage.
Because this project uses ES modules and external CDN assets, run it with a local HTTP server.
cd /Volumes/D/Hackathon2026
python3 -m http.server 5173Open: http://localhost:5173
cd /Volumes/D/Hackathon2026
npx serve -l 5173Open: http://localhost:5173
/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
- 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.
- Add a backend proxy for API key management and token refresh.
- Persist snapshots in a time-series store for stable historical baselines.
- Replace proxy indicators with strict-source official datasets where licensing allows.
- Add test coverage for forecast and trend modules.
- Add CI checks for linting, formatting, and regression validation.
This project is licensed under the MIT License. See LICENSE for details.