- Vercel: https://eurorack-panel-designer-oss8.vercel.app/
- GitHub Pages: https://ratpi-studio.github.io/Eurorack-Panel-Designer/
Single-page web app to sketch Eurorack front panels. The canvas mirrors a real 3U panel: convert cm/mm/HP on the fly, drop elements (jacks, pots, switches, LEDs, labels), tweak their properties, and export or save layouts locally.
- Canvas-driven editor with zoom, pan, snapping, and optional grid.
- Automatic conversion between centimeters, millimeters, and HP.
- Library of panel elements with editable geometry, rotation, and labels.
- Generated mounting holes that update with the panel width.
- Local projects (save/load/delete) plus JSON, PNG, SVG, KiCad Edge.Cuts (SVG or
.kicad_pcb), and STL exports (vector extrusion, thickness picker, and live 3D preview).
- React 19 + Vite with client-side routing.
- Strict TypeScript, unit-tested core logic.
- State managed with Zustand.
- Styling via vanilla-extract.
- Install Node.js 20+.
- Install the Vite+ CLI (
vp) globally. - Install dependencies:
This repository is configured for
vp install
pnpm, andvpwill use it automatically. - Start the dev server:
Vite serves the app at
vp dev
http://localhost:5173by default.
| Command | Description |
|---|---|
vp install |
Install dependencies through pnpm. |
vp dev |
Run the Vite dev server with HMR. |
vp run build |
Type-check then build the production SPA. |
vp preview |
Preview the production build locally. |
vp test |
Execute Vitest unit tests. |
vp lint |
Run oxlint with the project config. |
vp check |
Run formatting, linting, and type checks. |
- Adjust panel width through either the mm or HP input; the other unit updates instantly and the canvas resizes.
- Pick an element in the palette, click on the canvas to place it, then drag to reposition. Use the right-hand panel to fine-tune coordinates, rotation, or dimensions.
- Keep
Shiftpressed to temporarily disable snapping,Escto cancel placement,⌘/Ctrl + Zand⌘/Ctrl + Shift + Zfor undo/redo. - Shift-click elements or drag a marquee on the canvas to build a multi-selection, then drag anywhere on the canvas to move the entire group or press Delete to remove it in one go.
- Save named projects to the browser, export/import JSON for backups, render the canvas as PNG/SVG, export KiCad Edge.Cuts, or export a clean STL: choose STL in the export dropdown, set thickness in mm, and use the live 3D preview to inspect the mesh before downloading.
- Open the export dropdown and pick either KiCad Edge SVG (minimal Edge.Cuts-only SVG) or KiCad PCB (minimal
.kicad_pcbwith Edge.Cuts lines). - The SVG is ready for KiCad via
File → Import Graphics → Edge.Cuts. - The
.kicad_pcbcontains only Edge.Cutsgr_linegeometry (outline, circular holes approximated with 32 segments, rectangular cutouts). No copper or silkscreen is added.
Issues, feature ideas, and pull requests are welcome. Please open a discussion before large changes and keep business logic within src/lib modules so it remains testable. Keep docs in English.
Distributed under the MIT License. Feel free to fork, remix, and build on the project.
