30 generative-art sketches. Built to be broken.
Each sketch teaches one concept. You predict what it does, run it, break it, fix it, then say what you learned. The home page orders sketches by what you need to know first, so you build up knowledge one step at a time.
Open the site at the Journey view (it's the default). Start with sketches that have no locked prerequisites. Each sketch has a predict prompt, a live demo, and a "mark as understood" button. When you mark one done, the next ones unlock.
The Catalog view shows all sketches with search and filters. Use it when you want to browse or find something specific.
- Each sketch lives in
src/app/<slug>/. It exports a typedmetarecord inapp.meta.ts. scripts/build-app-registry.mjsreads those files and generatessrc/lib/creative/registry.generated.ts. The home page reads from that file.- Never edit the generated file by hand. Two sketch PRs can run in parallel because each one only touches its own
<slug>/folder. - Shared helpers (math, color, seeded random, noise, an animation-frame hook) live in
src/lib/creative/. Use these before writing your own.
pnpm install
pnpm dev # http://localhost:3000
pnpm registry # regenerate the catalog after adding/editing an app.meta.ts
pnpm test # vitest
pnpm build # next build- Create a folder:
src/app/<slug>/. - Add
page.tsxandapp.meta.ts(usedefineApp({ ... })from@/lib/creative/registry). - Run
pnpm registry. - Visit
/. Your sketch appears in both Journey and Catalog views.
See docs/creative-coding/CONVENTIONS.md for the full app shape spec. Read docs/creative-coding/LICENSING.md before copying any upstream source.
One worktree per sketch: git worktree add ../wt-<slug> -b app/<slug> dev. The registry script regenerates on each worktree, so no merge conflict ever touches the catalog.
docs/creative-coding/KNOWLEDGE-MAP.md— concept tree and coverage mapdocs/creative-coding/PLAYBOOK.md— builder playbookdocs/creative-coding/CURATION.md— curator playbookdocs/creative-coding/SOURCES.md— where ideas and code come fromdocs/creative-coding/ROADMAP.md— L1 to L3 curriculumdocs/data-viz/— data-viz sibling bundleNOTICES.md— attribution log and dependency list
Next.js 16 (App Router, Turbopack), React 19, TypeScript (strict + noUncheckedIndexedAccess), Tailwind 4, Vitest, pnpm.