Skip to content

Repository layout

index.html branded gallery — the landing page (live site root)
ideas.html the living idea board (capture surface for new directions)
README.md orientation + where-to-start
CONSOLIDATION.md the shared-lib / inliner / dist consolidation record
apps/<name>/ eleven served ES-module source apps
lib/met-stats.mjs canonical MET-style verification math (shared)
lib/met-stat-parse.mjs header-driven .stat/.txt/MODE parser
lib/selftest.mjs 129-check math self-test (node lib/selftest.mjs)
lib/met-stat-parse.selftest.mjs 97-check parser self-test
tools/inline.mjs single-file builder (served app → dist/*.html)
dist/*.html nine double-clickable single-file builds
assets/ brand logo (full-res + trimmed)
docs/EXPERIMENTS.md experiment tracker (branch, status, verdict)
docs/REAL_DATA_INTEGRATION.md real-data wiring blueprint + open decisions
docs/met-pipeline-explainer.html shareable "MET in the browser" explainer + benchmarks
docs/multiscale-storage-explainer.html COG / OME-Zarr / GeoZarr pyramid explainer
docs/reports/ per-experiment review log + verification screenshots
docs-site/ this documentation site (Astro Starlight)
  • Dependency-free by default. The apps are vanilla HTML/CSS/JS ES modules — no build step, no npm, no CDN. node is used only for the inliner and self-tests. (The docs site and the two networked apps are the deliberate exceptions.)
  • Experiments are branches. Prototypes are born in experiment/<name> worktrees and only reach apps/ through review + consolidation; duplicate scaffolding dies at that boundary.
  • dist/ is a shipped artifact. Git-ignored for the working tree but force-committed as the offline deliverable.
  • Docs record decisions, not just state. CONSOLIDATION.md explains why each app was migrated or left alone; the blueprint records open decisions with recommendations.
Thing Where Role
metplus-data-store sibling directory (not a git repo) Converts the 62 GiB METplus archive → Zarr v3 + Parquet; conversion & benchmark scripts
met-al-data-proxy sibling directory + Cloudflare Worker Gated GET /stores/* from the private R2 bucket (Range/206, CORS allowlist)
met-al-data private R2 bucket web-demo stores + full .stat Parquet + v2 common-grid store
met-al-lab Cloudflare Pages project The live site (production branch main, direct-upload deploys)