Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

I built a live "story of Earth" in one HTML file, on free open data and a free database published: true

Description and use

EarthVault runs entirely on free services, handles upstream limitations via server‑side jobs and caching, and delivers a stable, engaging user experience with minimal infrastructure.

Problem

Building a fully functional, data‑rich web app without a backend while handling rate limits, slow upstream APIs, and data schema changes.

Outcome

EarthVault runs entirely on free services, handles upstream limitations via server‑side jobs and caching, and delivers a stable, engaging user experience with minimal infrastructure.

Workflow

  • 1. Serve a single index.html with Tailwind, Chart.js, and lazy‑loaded Globe.gl.
  • 2. Use Supabase free tier for leaderboard, logs, and a cached sheet of Open‑Meteo data.
  • 3. Run a pg_cron job that calls Open‑Meteo hourly via pg_net, stores results in one JSON row, and serves it to all clients.
  • 4. Cache slow World Bank responses in localStorage (80 most recent, <400 KB each) and fall back to up to seven days old data on failure.
  • 5. Normalize CSV headers from upstream sources and run headless Chrome smoke tests before each push.
  • 6. Keep the free Supabase project alive with a daily GitHub Actions curl and status rows.
  • 7. Deploy via git push to GitHub Pages.
  • 8. Provide user‑friendly features such as forgiving streaks, answer explanations, and a live fact ticker.

Evidence

Open‑Meteo counts each location as a request, with roughly 10,000 per day per IP.

Source

The fix moved the fetch off the clients entirely: a pg_cron job in Supabase calls Open‑Meteo once an hour through pg_net, folds the answer into one JSON row, and every visitor reads that row.

Source

Every response from the slow yearly sources is now also kept in localStorage (80 most recent, under 400 KB each), and a failed call falls back to the stored copy, up to seven days old, with one small notice.

Source

The World Bank renamed the threatened‑birds indicator from EN.BRD.THRD.NO to EN.BIR.THRD.NO, so birds vanished from three vaults.

Source

Streak games with one forgiven mistake per streak kept people playing far longer than the unforgiving version.

Source

  • Record date: 2026-10-25T15:26:08.071Z