Naqsha

Solo buildopen toollive at naqsha.permaflux.studio

Try it

A design studio for pen plotters and laser cutters that runs in a browser tab. Compose generative patterns as layers, grow ornament along their geometry, route modulation between them, and hand the machine a plan it reproduces faithfully. Every composition stays alive as its parameters.

  • React
  • Browser-first
  • SVG
  • 29 generators
  • 3 machine profiles
  • 9,545 tests

Architecture

Every pattern is a generator function paired with a parameter spec; the UI reads the spec and renders the sliders, dials, and toggles without per-pattern UI code. A new built-in registers itself the moment its file exists; patterns extracted from photographs register at runtime with zero files.

The engine renders headlessly behind a DrawingContext seam — p5 in production, a pure-JS double in tests — which is how the suite reached 9,545 passing tests without a browser in the loop.

Sample pattern

The pattern on the back of cards on this site were created using Naqsha — the link below opens the exact design for you to play around with.

Open this composition →
Spirograph — peak randomization, all parameters unlocked.
Spirograph — same generator, different seed.

The chaos → order pipeline

Most generative tools have you tune knobs one at a time. Naqsha randomizes them all at once, across three pattern families (spirograph, recursive, flow lines); find one you like, freeze the parameters that matter, and re-roll the rest.

Every parameter has a lock icon; locked icons rotate to a diamond and stay through the next roll.

Ornament that grows along the geometry's edges

Attach a motif layer to a host pattern and the host's geometry emits anchors — crossings, edges, tips, cells. Anchors flow through a reorderable chain of blocks (every-Nth, skip rhythms, seeded density, field masks) into a sequencer that deals glyphs by zone, so one motif layer flowers at the apex of a strand and leafs along its stem.

Sixty-two built-in glyphs, a pen editor for drawing your own, and anchoring that stays glued to geometry even while a modulator bends it.

Fields that drive other layers

Any layer can carry a modulator — a radial, linear, noise, or wave field dragged directly on canvas by its gradient handles — mapped to warp, density, or distortion on any other layer. A flow field breathes through a strict tiling: density swells where the field says so, and the geometry stays true underneath.

The same 36 × 36 grid, warped live by five different fields — three built-in sources and two pattern guides.

Grid 36×36
Grid 36×36
×
Radial field
Radial field
Warped grid
Warped grid
Grid 36×36
Grid 36×36
×
Noise field
Noise field
Warped grid
Warped grid
Grid 36×36
Grid 36×36
×
Wave field
Wave field
Warped grid
Warped grid
Grid 36×36
Grid 36×36
×
Topographic contours
Topographic contours
Warped grid
Warped grid
Grid 36×36
Grid 36×36
×
Chladni field
Chladni field
Warped grid
Warped grid

From screen to machine

The Run Plan shows exactly what the machine will do — route, order, time, warnings — before anything moves, and every export carries a one-line Receipt: estimated run time, anything cropped, warning count. Export always succeeds; the receipt makes it never silent.

  • Plotters get pen-ready SVG with pen swaps surfaced as pauses in the plan.
  • Lasers get role-separated cut / score / engrave layers — and Raster Etch, which screens a photograph to the exact 1-bit bitmap the laser will burn. What renders is what etches.
  • A 3D preview shows the physical reaction before you commit stock: frosted acrylic, charred plywood, a kerf-thin cut seam.

Inside the tool

Selected slides from the case study deck.

Start with chaos - three pattern families (spirograph, recursive, flow lines), randomized to show the breadth of the design space.
Progressively freeze the parameters that matter — lock the ones that work, re-roll the rest.
Three kinds of maker, one grid — plotter artists (SVG), laser cutters (G-code), generative designers (image).
Palette drawn from the source material — iron-gall ink, saffron, cobalt, madder. Pulled directly from historical textile references.