Personal sandbox for generative art projects, built with p5.js and Vite.
Each project lives in projects/ as an independent package with its own dependencies and dev server. The repo is structured as a pnpm workspace — one install gets everything running.
pnpm install
pnpm dev:gelatina
pnpm dev:generative-factory
pnpm dev:boubaOr run any project directly:
pnpm --filter gelatina dev
pnpm --filter generative-factory dev
pnpm --filter bouba devThree overlapping grids of circles in pink, green and yellow, rendered with blend modes (MULTIPLY / SCREEN depending on theme). The composition drifts autonomously using Perlin noise. Built for fxhash — the fxrand seeded RNG drives all randomness so each token hash produces a unique, deterministic output.
Stack: p5.js · TypeScript · Vite · fxhash
An industrial layout generator that arranges rectangular blocks into factory-like compositions. Blocks are assigned roles (biggest, screws, cables, icon, animated, label, pulley) and drawn across multiple layers. Color palette is limited to four colors (pink, black, blue, white) with randomized assignments per run. Includes a lil-gui control panel and a debug overlay.
Stack: p5.js · TypeScript · Vite · lil-gui
Generates organic blob shapes inspired by the bouba/kiki effect. Two layers of rounded forms are built by chaining non-overlapping circles into a smooth closed contour, then blended with MULTIPLY. The constraint-solving runs iteratively in the background with a loading animation while it resolves. Built for fxhash — supports PNG and SVG export.
Stack: p5.js · TypeScript · webpack · fxhash
# 1. Create the project
mkdir projects/my-project && cd projects/my-project
pnpm create vite . --template vanilla-ts
# 2. Add a dev script to the root package.json
# "dev:my-project": "pnpm --filter my-project dev"Each project was imported via git subtree so its history is embedded here. To pull in new commits from the original repo:
git subtree pull --prefix=projects/gelatina gelatina main
git subtree pull --prefix=projects/generative-factory generative-factory main
git subtree pull --prefix=projects/bouba bouba main