OpenSCAD source for 3D-printable models. STLs built automatically by GitHub Actions on every push and attached to Releases on version tags.
  • OpenSCAD 65.4%
  • Python 34.2%
  • Makefile 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
cantor-bot[bot] 9bb4975f6a
ci: pin actions and scope permissions in pages workflow (#8)
Co-authored-by: Cantor <cantor@users.noreply.github.com>
2026-08-29 04:26:31 -04:00
.github/workflows ci: pin actions and scope permissions in pages workflow (#8) 2026-08-29 04:26:31 -04:00
previews Add solid square plate (4.5" × 4.5" × 1/8") (#6) 2026-08-28 19:18:17 -04:00
src Add solid square plate (4.5" × 4.5" × 1/8") (#6) 2026-08-28 19:18:17 -04:00
tools Fix site: hero scenes per-model, not per-category (#3) 2026-05-27 23:47:10 -04:00
.gitattributes Use a real Mac mini M4 mesh in the hero render 2026-05-26 03:07:22 -04:00
.gitignore Use a real Mac mini M4 mesh in the hero render 2026-05-26 03:07:22 -04:00
Makefile Add GitHub Pages site auto-generated from src/ 2026-05-24 01:32:31 -04:00
README.md Add solid square plate (4.5" × 4.5" × 1/8") (#6) 2026-08-28 19:18:17 -04:00

3d-models

OpenSCAD source for 3D-printable models. Every .scad file builds to STL (for slicing), 3MF (richer modern format), and a PNG preview (shown below). Builds run automatically in GitHub Actions: artifacts on every push, attached to GitHub Releases on version tags.

Layout

src/
  mac_mini/          # Mac mini rack accessories
  puffco/            # Puffco accessories
build/               # Generated STL + 3MF (gitignored)
previews/            # Generated PNG renders (tracked in git so README renders on GitHub)
tools/build.py       # Build orchestrator (variants, parallelism, mtime-based rebuild)
Makefile             # Thin wrapper: make / make clean / make list / make force
.github/workflows/   # CI: build, manifold check, artifact upload, release attach

Variant matrix (parametric models)

Drop a sidecar src/<name>.json next to src/<name>.scad using OpenSCAD's customizer format. Each entry under parameterSets produces one output:

src/box.scad
src/box.json     →   build/box.small.stl + .3mf + previews/box.small.png
                     build/box.large.stl + .3mf + previews/box.large.png

No sidecar → a single output set: build/<name>.{stl,3mf} + previews/<name>.png.

The customizer JSON is what OpenSCAD's GUI saves when you "Add new parameter set" — so you can author presets visually and the build picks them up.

Local build

Install OpenSCAD (https://openscad.org/downloads.html), then:

make             # build STL + 3MF + previews; regenerate README models section
make force       # rebuild everything regardless of mtime
make list        # show planned targets (sources → outputs)
make clean       # wipe build/ and previews/*.png

On macOS the build auto-detects /Applications/OpenSCAD.app. Elsewhere it uses openscad on PATH. Override with OPENSCAD=/path/to/openscad make.

Builds run with --hardwarnings: non-manifold geometry, unset variables, and other warnings fail the build instead of silently producing broken STLs.

Getting model files

  • Latest build: Actions tab → most recent run → download the models artifact (contains all STL + 3MF).
  • Versioned release: push a tag like v0.1.0 — CI attaches every STL + 3MF to the GitHub Release.
git tag v0.1.0
git push origin v0.1.0
assembly preview

Mac mini model by Satyr, CC BY 4.0.

assembly preview

Models

Mac Mini

Model Parts
mini_claw_dovetail pass-through · plug · socket

Puffco

Model Parts
puffco_jar_knife_caddy carcass · deck · drawer · lid
puffco_knife_jar_tray lid · tray
puffco_modular_tray bucket · dock · knife_jar · lid

Shapes

Model Parts
square_plate —
trapezoid_plate —