Skip to content
SlyWombatPublic

About

Parametric 3D-printable enclosure designer for microcontrollers and SBCs

Topics

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,662 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Case Maker

Design a 3D-printable enclosure for your circuit board in your browser — free, no signup, no install.

Pick a board, and Case Maker generates a parametric case around its real connector and mounting-hole geometry: wall cutouts land exactly where the USB ports are, bosses land exactly on the holes. Tweak walls, lids, joints, vents, snaps, hinges, and stands with live 3D feedback, then export production-ready STL / 3MF straight into your slicer.

▶ Try it now: electricrv.ca/casemaker

The board picker

What it does

  • 29 built-in board profiles — Raspberry Pi (3B/3B+/4B/5/Zero 2W/Pico), Arduino (Uno, GIGA, Nano ESP32), ESP32 devkits, 4.3" touch-panel modules, QuinLED controllers, Teensy, Jetson Nano, BeagleBone, micro:bit, M5Stack, sensor breakouts, USB cameras — each schema-validated with a manufacturer source URL, most measured from vendor CAD.
  • A community board library you can enable with one click (casemaker-library), plus import/export of board-profile JSON and support for any number of online board sources.
  • Quickstart templates — one click from board to a curated, print-tested case recipe (vented sensor pods, touch-panel bezels, desk stands, wall mounts, DMX controllers, a Pelican-style latched case…).
  • Real-time parametric editing — every slider rebuilds the case in ~50 ms via Manifold WASM CSG on a worker thread.
  • Joints & retention: flat, snap-fit (auto-placed catches), and screw-down lids; screwless board retention with two-jaw snap clips for hole-less boards; heat-set-insert-aware bosses.
  • Automatic port cutouts for USB-C/A/B, micro-USB, HDMI/micro-HDMI, barrel jack, RJ-45, SD, ribbon cables, antennas — per-port toggles and custom cutouts.
  • Beyond boxes: display bezels, desk stands and snap-on wall mounts for finished panel modules, piano hinges, cam latches, TPU gaskets, rugged ribbing, fan mounts, ventilation patterns.
  • External STL/3MF import with reference / subtract / union — drop a fan grille STL, mark it subtract, watch it carve the shell.
  • STL (binary/ASCII) + 3MF export, print-ready or assembled layout; schema-versioned project save/load; full undo/redo. Fully client-side — your designs never leave your machine. Also ships as a Windows desktop app. The electricrv.ca site keeps a cookie-free page-view count (no cookies or local storage, no IP addresses stored, nothing recorded under Do Not Track / Global Privacy Control); the desktop app keeps none.

Exploded view of a generated sensor pod

Add your board

The library grows by contribution, and provenance is taken seriously (dimensions come from vendor CAD or calipers — not squinted off datasheets).

Easiest way: point Claude Code at the community library's agent playbook and it will set up the toolchain, interview you about your board, author + validate the profile, help you test it in the live app, and open the PR:

claude "Fetch https://raw.githubusercontent.com/SlyWombat/casemaker-library/main/AGENT.md and follow it to help me contribute my board"

Prefer to do it by hand? See casemaker-library. Every board in the picker states its origin — built-in, local (imported by you), or the online source it was fetched from — and its measurement method. There is deliberately no "verified" badge: we cannot audit a third-party profile's accuracy, so the app reports provenance rather than a verdict.

Documentation

Run it locally

cd casemaker-app
npm ci
npm run dev          # Vite dev server (http://localhost:8000)
npm test             # Vitest unit suite
npm run test:e2e     # Playwright E2E suite
npm run build        # production web bundle
npm run tauri:build  # Windows/macOS/Linux desktop installer (needs Rust)

Stack: TypeScript (strict) · React 19 · Vite · three.js / react-three-fiber · Manifold-3d WASM CSG in a Web Worker · Zustand + Immer + zundo · Tauri 2 desktop wrapper. Architecture rule: the parametric Project JSON is the single source of truth; rendered geometry is derived state, recomputed in the worker on every change. Full tour in the Technical Reference.

Desktop / LAN

The desktop build embeds a small HTTP server (default port 8000, configurable in Settings). casemaker.exe --bind-all exposes it to your LAN — trusted networks only. --port N and --print-config are also available.

Contributing

Bug reports, board profiles, and PRs are all welcome — see CONTRIBUTING.md for the issue-first bug workflow, code style, and test-suite contract, and good first issues for places to start.

Disclaimer

Case Maker generates geometry from board profiles that are measured and maintained by humans — there is no guarantee a generated case will print correctly or fit your board. Printer calibration, filament shrinkage, board revisions, and profile errors all affect fit. Treat your first print of any case as a test article, and verify critical dimensions against your actual board before committing to a long print. Each profile's origin and measurement method are shown in the picker, but neither is a promise for your hardware.

License

Apache License 2.0 — free for personal and commercial use, with an explicit patent grant. Community board-profile data in casemaker-library is CC BY 4.0. By contributing you agree your contribution is licensed under the same terms.

About

Parametric 3D-printable enclosure designer for microcontrollers and SBCs

Topics

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages