Design a squat rack, then the whole gym around it, in the browser. Every part is parametric CAD generated on the fly (no downloaded meshes), snaps to real 75 mm tubing and 50 mm hole spacing, and exports to GLB or a print-ready 3MF.
Live at gym.wesbos.com
Eleven real home and garage gyms, recreated piece by piece from Gym Radar and gym tours. Open one to remix it; whatever you had unsaved is kept as a configuration.
Each gym has a detail page with its equipment list, and a permanent builder link (/?gym=<slug>) you can share. The
link stays in the address bar until you change something.
While a big design loads, the stage shows real progress as each model is generated:
Uprights and crossmembers, J-hooks and safeties, benches, machines, cable towers, bars, plates, storage, cardio and more — BOS STRENGTH's own parts plus independent reconstructions of gear from Rogue, REP, Titan, Bells of Steel and others. Press / for the parts gallery.
Attachments show their valid mount holes and a ghost preview; click to place. Floor items drag and snap to a 25 mm grid (hold Alt to turn snapping off), R or Alt+scroll rotates, and double-click picks anything back up.
Select anything for the floating action bar (move, rotate, duplicate, lock, focus, delete) and a full inspector with the part's options, placement and finish.
Walls, flooring, turf and ceiling, each with their own finishes. Wall items (pegboards, bar holders) hang on the walls and attachments hang on them.
The outliner (O) lists every piece grouped by rack, floor and wall. Hide parts to see behind them, and lock parts in a busy gym so dragging to orbit never nudges them.
3D, front, side and top (1–4), with a tight fit-to-view.
⌘K opens a command palette for every action and every part:
? shows every shortcut, generated from the same registry the keys use:
Undo/redo with a scrubbable history timeline (the panel toggles at the top of the canvas show it), named configurations saved in the browser, JSON import/export, and a "Play build" animation that assembles the gym piece by piece.
GLB for the whole scene, or a 3MF miniature (1:10 or 1:20) laid out on Parts and Hardware plates, ready for Bambu Studio or OrcaSlicer. See docs/print-export.md.
Browse every part at /library, then open any part to tweak its parameters on its own and export it.
The builder works on touch: one finger orbits, two pan and pinch, long-press picks a part up, and a bottom sheet holds the parts, inspector, timeline, room and outliner.
npm install
npm run dev # Vite dev server on 127.0.0.1
npm test # unit tests (node:test via tsx)
npm run typecheck
npm run build # typecheck + production build
npm run deploy # build + wrangler deploy (Cloudflare)- Stack: React 19, TanStack Router, three.js, Vite, Cloudflare Workers static assets.
- Geometry: parts are authored in TypeScript (
rack-generator/) and built with manifold-3d in a web worker; the scene caches models by their parameters. - Gyms: each gallery gym is a JSON document in
src/gyms/data/with a preview render inpublic/gyms/. - More docs: topology · custom logos · print export · equipment catalog · multi-select
Third-party equipment is independently reconstructed from published dimensions and product photos; trademarks belong to their owners. Gyms and equipment lists belong to their owners.


















