Useful software can still feel personal.
Keep the interface precise. Let the drawing carry attention and intent.
Rougher Stuff
Expressive drawing tools for the web
Precise geometry underneath. Deliberate, human marks on top. Build drawings, annotations, and connectors that stay useful as interfaces change.
Keep the interface precise. Let the drawing carry attention and intent.
01 / Principle
Rougher Stuff keeps geometry deterministic, then adds deliberate imperfection at the visual layer. The UI remains quiet so the output can speak.
02 / Packages
Start with a single mark. Add routing, shared geometry, or timelines only when the composition needs them.
03 / Composition
SVG, DOM, and connectors speaking the same visual language.
Updated / 12 Aug
The outer framework stays calm and exact. Emphasis is earned by the part that explains the idea.
04 / Continue
05 / Quick start
Install a focused package, pass familiar inputs, and keep the result around to update or animate later.
Open documentationpnpm add @rougher-stuff/rough-notation
const note = annotate(target, {
type: 'highlight',
color: '#ebc54c',
seed: 43,
})
await note.show().finished