A static rebuild of pnwmoths.biol.wwu.edu — a natural history catalog of Pacific Northwest moths.
The site is generated entirely at build time from flat files (CSV + Markdown). There is no server or database at runtime. Each species page includes taxonomy, prose description, photos, occurrence map, phenology chart, and similar species links.
Data lives in data/:
species.csv— taxonomy, common names, NOC IDsrecords.csv— ~100k occurrence records (lat/long, date, collector, record type)glossary.csv— illustrated glossary terms
At build time, a DuckDB script joins the CSVs, validates integrity, and exports a per-species Parquet file alongside each HTML page. The browser loads occurrence data asynchronously from those Parquet files — nothing is embedded inline.
The site is built with Eleventy (HTML generation), Vite (JS bundling), and Lit web components for the interactive factsheet features (map, chart, filters, slideshow). Search is powered by Pagefind, which indexes the site at build time.
Every build emits an unlinked diagnostic file, _site/species-audit.csv (live at https://moths.pnwinsects.org/species-audit.csv) — one row per species in species.csv, flagging whether it has occurrence records, is visible on the site, and appears in the identification key. It's a maintainer tool for spotting gaps (e.g. a species with records but no page); nothing on the site links to it. See scripts/emit-species-audit.ts for the exact columns and how each flag is derived.
A push to main deploys production: the built _site is uploaded additively (no purge, no deletes) to the Bunny Storage Zone that also serves the images, at https://moths.pnwinsects.org/. GitHub Pages is a manual workflow_dispatch staging target under /pnwmoths/.
See CONTRIBUTING.md for the CI workflows and the required deploy secret, and ADR 0008 for the rationale.
Plain-English instructions for common maintenance tasks are in _instructions/:
ADDING_SPECIES.mdADDING_RECORDS.mdEDITING_DESCRIPTION.mdADDING_PHOTO.mdADDING_PLATE.mdEDITING_HOME_ANNOUNCEMENT.mdREMOVING_SPECIES.md
Data and content © respective contributors. Code MIT.