Skip to content

SeanOC/stuff

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

123 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

stuff

3D-printable parts written by Claude Code and previewed live in the browser. Every model is a single-file parametric OpenSCAD design on top of BOSL2 and QuackWorks; a Next.js

  • WASM UI at stuff.seanoc.com exposes each one with live sliders and an STL download.

The interesting part isn't the models — it's the authoring loop.

Detail page — cylindrical holder with live WASM render, grouped param rail, and render log

How it works

  1. Describe the part to Claude Code: "parametric holder for X, fits Y range, mounts to Z."
  2. Claude writes the .scad, annotates each @param, seeds a <stem>.invariants.py sidecar (watertight / bbox / single-body claims), and adds a catalog entry.
  3. Push. CI regenerates thumbnails and runs the invariants gate.
  4. Vercel deploys on merge to main.
  5. Open the model's page at stuff.seanoc.com to tweak sliders and download an STL.

A minimal first prompt worth copy-pasting:

Add a new model: a parametric wall-mounted hook for hanging a bike helmet. Parameters: hook diameter (30–80 mm), mount plate size, Multiboard backer. Annotate with @param, add an invariants sidecar, add a catalog entry, render thumbnails.

See AGENTS.md for the agent-facing spec (param grammar, invariants, render pipeline) and app/README.md for web-app architecture.

Models

File Description
cylindrical_holder_slot.scad Multiboard-mounted holder for any cylindrical item (42–77 mm tested), Multiconnect slot backer.
popcorn_kernel.scad Cartoonish popped popcorn kernel — replacement piece for a Disney toddler-toy popcorn stand.
spraycan_carrier_6x50mm.scad 2×3 spray-can tote carrier for 50 mm cans: six open-front C-ring cradles, drainage base plate, semicircular-arched handle. Kid-safe, wet-safe, tall-can (195 mm) clearance.

Development

After cloning:

./scripts/setup-git-hooks.sh   # one-time — attaches the commit-trailer hook
npm install
npm run dev                    # http://localhost:3000

Render a model directly via OpenSCAD (Manifold backend required — CGAL OOMs on BOSL2):

openscad --backend Manifold -o out.stl models/cylindrical_holder_slot.scad

libs/ vendors BOSL2 and QuackWorks pinned to compatible commits — newer BOSL2 breaks QuackWorks' vector-spin syntax. See libs/README.md for the pins.

Continuous integration

Every push and PR runs render-thumbnail regeneration, per-model invariants (watertight, single-body, triangle ceiling, PRINT_ANCHOR_BBOX drift), Playwright end-to-end tests, and vitest unit tests. Thumbnails and invariants are mandatory gates. See docs/ci.md for the full pipeline.

License


Built with Claude Code using a multi-agent authoring workflow.

About

Parametric 3D-printable designs authored with Claude Code. Next.js + WASM web UI for live sliders and STL export. https://stuff.seanoc.com

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors