diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..9831838 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,45 @@ +## Project Overview + +Self-contained web-dev "probes" — each explores one concept (overscroll, validation timing) with a +live demo and an article. Static Astro site deployed to GitHub Pages. Package manager is **Bun**; +Node `>=22.12.0`. + +## Commands + +- `bun run dev` — dev server (`--host`, on LAN) +- `bun run build` / `bun run preview` — build to `dist/` / serve it +- `GITHUB_PAGES=true bun run build` — build with the `/probes` base path (what CI deploys) +- `bun run lint` / `bun run lint:fix` — oxlint + stylelint +- `bun run format` / `bun run format:check` — oxfmt (not Prettier) +- `bun run typecheck` — `oxlint --type-aware` + +## Architecture + +**One probe = one route folder** under `src/pages//`, owning everything it needs: + +- `index.astro` — full `` page (probes are standalone, no shared layout) +- `.css` — page styles, imported into the `.astro` file +- `_article.md` — the explainer (`_` prefix keeps it out of routing) +- `_components/` — React island(s) + logic, only if interactive + +`src/pages/index.astro` is an intentionally empty landing page; the probe list lives in `README.md`. + +**React islands:** `output: "static"`. Pages are SSR'd HTML; interactivity is opt-in per component. +`validation` mounts one island (``); `overscroll` uses no React, just an +inline `