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-startCONSOLIDATION.md the shared-lib / inliner / dist consolidation recordapps/<name>/ eleven served ES-module source appslib/met-stats.mjs canonical MET-style verification math (shared)lib/met-stat-parse.mjs header-driven .stat/.txt/MODE parserlib/selftest.mjs 129-check math self-test (node lib/selftest.mjs)lib/met-stat-parse.selftest.mjs 97-check parser self-testtools/inline.mjs single-file builder (served app → dist/*.html)dist/*.html nine double-clickable single-file buildsassets/ brand logo (full-res + trimmed)docs/EXPERIMENTS.md experiment tracker (branch, status, verdict)docs/REAL_DATA_INTEGRATION.md real-data wiring blueprint + open decisionsdocs/met-pipeline-explainer.html shareable "MET in the browser" explainer + benchmarksdocs/multiscale-storage-explainer.html COG / OME-Zarr / GeoZarr pyramid explainerdocs/reports/ per-experiment review log + verification screenshotsdocs-site/ this documentation site (Astro Starlight)Principles
Section titled “Principles”- Dependency-free by default. The apps are vanilla HTML/CSS/JS ES modules — no build
step, no npm, no CDN.
nodeis 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 reachapps/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.mdexplains why each app was migrated or left alone; the blueprint records open decisions with recommendations.
Related repositories & services
Section titled “Related repositories & services”| 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) |
