3D-print softwareIn development2026
Design a charm bracelet in the browser. Get a print-ready, multi-colour file sized to your wrist.
- sizing accuracy on the inner circumference
- 0.01 mm
- sizing accuracy on the inner circumference
- two-colour charm shapes in the catalogue
- 20
- two-colour charm shapes in the catalogue
- geometry-kernel tests
- 106
- geometry-kernel tests
- ways out: download, slice, send to printer
- 3
- ways out: download, slice, send to printer
The problem
What people put up with
There are hundreds of free bracelet models online, and none of them fit. You download an STL, scale it by guesswork, find out the clasp doesn't close, and then paint colours onto parts by hand in the slicer. Sellers who want to offer personalised jewellery have to repeat that for every order.
The odd angle
The insight
We stopped treating a bracelet as a model and started treating it as a design document. A small JSON file holds the wrist size, the fit, the link style and the charms. The server trusts only that file and rebuilds the geometry from it every time. Sizing, colours, slicing and seller pricing all come from the same source.
The approach
How we built it
- 1
Market research before code
We studied MakerWorld crowdfunding and found that browser-based generators raise far more than model packs, and that the commercial seller tier earns the most. No bracelet or jewellery generator had run a campaign. So we positioned the product as a charm-bracelet generator with a seller licence.
- 2
A real geometry kernel
We wrote the CAD kernel in TypeScript on the Manifold WASM solid-modelling library. It runs in a Web Worker for the live preview and in Node on the server, so the preview and the exported file always match.
- 3
Sized to the wrist, to the hundredth of a millimetre
You enter a wrist size from 110 to 260 mm and a fit (snug, comfort or loose). A sizing solver works out the link count, then stretches or shrinks the link pitch within its allowed range until the inside of the bracelet is within 0.01 mm of the target.
- 4
A real slicer behind the button
A Python sidecar wraps the OrcaSlicer command line. It returns a ready-to-print .gcode.3mf with print time and grams per colour. It can also send the file to a Bambu printer on the local network and report progress back.
What it does
Features
- Three link styles that share one snap-together hinge: modular snap, curb and snake
- A catalogue of 20 two-colour charms, inlay or raised, sized from 12 to 24 mm
- Charms from your own image: upload, trace, and cut out or badge
- Name and text charms: tiles, beads, name plates, digits, ♥ and ★
- Prints in place with no clasp. The last link snaps onto the first.
- AMS-ready colour slots, with the most similar colours merged when there are more colours than trays
- Seller tools: cost and markup, price calculator, multi-plate batch files, public shop pages
- Customer configurator: buyers personalise a listed bracelet in 3D and send an order request
The hard parts
What fought back
Snap fits you can't test in software
The defaults are 0.15 mm hinge clearance, 0.10 mm socket clearance and 0.15 mm ridge interference, tuned for a 0.4 mm nozzle in PLA or PETG. We're calibrating them with physical test prints before launch, and the runbook has a tolerance-calibration step for every new printer.
Two colours without a mess
Charms print face-down, so the two colours alternate only in the first few layers and the face gets the smooth finish of the build plate. A deliberate print orientation gives a cleaner result than any slicer setting.
Trusting nothing from the client
The server never accepts uploaded geometry. It rebuilds every file from the design JSON, so licensed exports, download limits and shop orders can't be bypassed by a modified browser.
What's next
On the roadmap
- Physical print calibration of every snap tolerance
- Printer registration UI for one-click LAN printing
- Splitting designs that don't fit one build plate across several plates
- A crowdfunding launch with stretch goals that double as a public roadmap