Skip to content

Latest commit

 

History

History
86 lines (54 loc) · 3.88 KB

File metadata and controls

86 lines (54 loc) · 3.88 KB

random

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.

Getting started

pnpm install
pnpm dev:gelatina
pnpm dev:generative-factory
pnpm dev:bouba

Or run any project directly:

pnpm --filter gelatina dev
pnpm --filter generative-factory dev
pnpm --filter bouba dev

Projects

gelatina-16 gelatina-14

Three 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


image image image image image

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


bouba-colors-17 bouba-colors-7 bouba-colors-6

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


Adding a new project

# 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"

Pulling updates from a source repo

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