# Sketches

Small sketches that run in the browser: p5.js, plain WebGL, CSS. Each one is a folder
of a few files — `index.html`, usually a `sketch.js` and a `style.css`, sometimes an
image or a `.json` beside them — and nothing else. A folder runs as-is from any static
server (`python3 -m http.server` inside it works), because p5 comes from a CDN and
every path inside is relative. Copy a folder and it keeps working.

Each `index.html` carries the sketch's `<title>` and a one-line
`<meta name="description">`; that is where the listing at
[tiborudvari.com/sketchbook](https://www.tiborudvari.com/sketchbook/) gets its text.

## Where this lives

- **Source of truth:** `public/sketches/` in the private repository of
  [tiborudvari.com](https://www.tiborudvari.com/). That site serves the same folders at
  `/sketches/<name>/`, plus an editor at `/s/<name>/`.
- **This repository** is a read-only mirror of that folder, pushed automatically on
  every change. Do not open pull requests or push here — they cannot be merged back.
- **[sketchbook.tiborudvari.com](https://sketchbook.tiborudvari.com/)** serves the same
  folders raw, with a directory listing.

## Editing (for the author)

A sparse, blobless checkout holds only this folder and nothing else of the site:

```sh
git clone --filter=blob:none --sparse git@github.com:TiborUdvari/tiborudvari.com.git sketches
cd sketches && git sparse-checkout set public/sketches
```

Commit and push from there like any clone. The site deploys, the mirror updates.
