Skip to content

About

No description, website, or topics provided.

Resources

Stars

49 stars

Watchers

0 watching

Forks

Repository files navigation

BOS STRENGTH · Gym Builder

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

A full garage gym open in the builder: red power racks, machines, dumbbells and plates in a walled room


Start from a real gym

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.

The gym gallery: cards with renders of each recreated gym

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.

A gym detail page with the render, highlights and full equipment list

While a big design loads, the stage shows real progress as each model is generated:

The canvas dimmed under a "Loading models · 12 of 41" progress card

Build it

500+ parts

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.

The parts gallery with category rail and thumbnail grid

The parts gallery filtered to Rogue

Place, snap, move

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.

Placing a J-hook: amber ghost on the rack with a placement hint bar

Inspect and edit

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.

A selected leg extension machine with the action bar above it and the inspector on the right

The room

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 room inspector open with walls and flooring around a gym

Outliner, hide and lock

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.

The outliner beside the canvas with some parts locked

Every view

3D, front, side and top (1–4), with a tight fit-to-view.

Top-down plan view of a basement gym

Power tools

⌘K opens a command palette for every action and every part:

The command palette filtered to lock commands

? shows every shortcut, generated from the same registry the keys use:

The keyboard shortcuts overlay

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.

Export

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.

The export menu with 3MF print options

Parts library and part viewer

Browse every part at /library, then open any part to tweak its parameters on its own and export it.

The parts library grid

The part viewer showing a Bells of Steel cable tower with its loading, pin and carriage options

Phones and tablets

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.

The builder on a phone with the bottom sheet tabs   The gym gallery on a phone

The builder on an iPad in landscape


Development

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 in public/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.

About

No description, website, or topics provided.

Resources

Stars

49 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages