Doop
Doop: 오픈소스 멀티플레이어 디자인 캔버스 및 AI 에이전트용 MCP
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Parametric radial engraving designer for die-stamped jean buttons — every element computed from the centre axis
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Live app: https://buttonic.app
A browser tool for designing the engraved face of metal jean buttons. Its whole premise is true radial geometry from a single axis: every element is computed from the centre outward — counts, radii, and angles — the way a real die-stamp is engraved. No manual duplicate-and-rotate, ever.
npm install
npm run dev # http://localhost:5173
npm test # geometry-kernel + import + golden-preset tests
npm run build # typecheck + production build
A document is a ring-layer stack (centre → rim) over a mm-true canvas. Six layer types cover the radial vocabulary:
| Layer | What it computes |
|---|---|
| ring | circle stroke or filled annulus (borders, rims, grooves) |
| hatch | N radial ticks between two radii, with twist — reeding / engine-turned texture |
| repeat | a motif (built-in library or your SVG) instanced N× around the axis; 1–2 rows with stagger + flip for herringbone |
| ringText | real glyph outlines on a circular baseline (kerning, inward/outward); classic arc placement or full polar warp |
| center | monogram glyph or SVG at the axis, with an optional clearance moat that clips line-work beneath |
| bend | any SVG warped into an annulus band — x→angle, y→radius — repeatable around the circle |
Two bundled templates recreate the reference buttons the project was built against: Engine turned (guilloche hatch bands + emblem) and Blackletter monogram (herringbone chevron band + blackletter D).
Every button you work on is cached locally in the browser (IndexedDB) and autosaves as you
edit. The ▾ next to the document name opens the switcher — thumbnails, last-edited times,
duplicate/download/delete — and "New" always creates a fresh cached button, never
overwriting the current one. Load projects via Open…, ⌘O, or by dropping a .json /
exported SVG onto the canvas; loaded files join the workspace as new entries. Nothing
leaves your machine; private-mode browsers fall back to a session-only workspace with a
warning banner.
width="17mm", user units = mm), instances expanded
to plain paths by default (CAM software dislikes <use>), optional mirror-for-die,
warnings for sub-0.05 mm strokes and geometry off the face. The project JSON is embedded
in <metadata>, so an exported SVG re-opens as a document.A bundled dozen (OFL/Apache, licenses in public/fonts/, lazy-loaded on first use):
Cinzel (engraved caps), EB Garamond (classic serif), UnifrakturCook (blackletter),
Roboto (universal sans), Oswald (condensed industrial), Playfair Display (didone),
Jost (geometric), Roboto Slab, Pinyon Script (copperplate), Rye (western),
Allerta Stencil, Bebas Neue (display caps).
Upload any .ttf/.otf. Kerning uses what opentype.js can read (GPOS support varies by
font — letter-spacing is the manual escape hatch). No WOFF2.
Local fonts (Chrome/Edge): the font picker's Local… button browses the fonts
installed on your machine via the Local Font Access API — one permission prompt, previews
rendered in each font, TrueType Collections (.ttc, most macOS system fonts) unpacked
automatically. Projects store local fonts as references, not bytes: on a machine without
the font, the design keeps its settings and shows a re-link prompt instead of that text —
but exported SVG/PNG always contain baked outlines and render everywhere. A per-font
Embed action copies the bytes into the project when you explicitly want a portable
file (mind the font's license).
⌘Z / ⇧⌘Z undo/redo · ⌘S save project · ⌘O open project · ⌘D duplicate layer · ⌫ delete layer ·
[ ] reorder · 0 / = / - zoom fit/in/out · M metal preview · Esc deselect ·
space-drag / middle-drag pan · ⌘+wheel zoom · arrow keys nudge fields (⇧ ×10, ⌥ ×0.1) ·
drag field labels to scrub · ⌥ bypasses snapping while dragging.
Fill-vs-fill boolean knockouts (polygon-clipping is the v2 candidate), bezier re-fitting
of warped polylines, DXF export, three.js relief preview.