All projects / 04 of 10
2026 / Product Design & Engineering

Juggle

CLI-first CadQuery club generator for repeatable two-piece, keyed, and mini print builds.

Project count

04

One part of a portfolio focused on expressive interfaces and disciplined systems.

Year 2026
Role Product Design & Engineering
Case study

Overview

Juggle is a parametric hardware repo for generating 3D-printable juggling clubs and related parts from code instead of from a point-and-click CAD workflow. The value is repeatability: tune geometry, export a build, print it, and keep the full design history in plain text. The default path is a full-size two-piece build that fits ordinary FDM constraints, but the repo also supports keyed production-style variants, mini one-piece outputs, and accessory parts that follow the same preset-driven workflow.

What The App Does

  • Generates printable club geometries and accessory parts from Python and CadQuery.
  • Uses preset-driven builds for different silhouettes, joint styles, and material/output strategies.
  • Treats the full-size two-piece club as the practical default path, with mini one-piece and keyed production variants available when print constraints or assembly goals change.
  • Keeps print orientation, part splitting, and export behavior as part of the reproducible build contract rather than as manual slicer folklore.

Product/UX Review

This is intentionally a maker-facing tool rather than a polished consumer app. The interface is the configuration and preset system, which is the right choice for repeatable design work even if it narrows the audience. The repo is opinionated about how a club should get from geometry to printer: the split build, the preset names, the orientation choices, and the output files all make the workflow legible without turning it into a GUI.

That matters because a point-and-click editor would hide the real advantage here. The value is not “a missing visual builder.” The value is that physical changes are source-controlled, comparable, and reproducible across iterations.

Technical Architecture

The repo is centered on Python scripts, CadQuery geometry generation, and preset/config-driven output. generate_club.py is the main path, but the surrounding generators for stands, poi parts, shaft adapters, and wearables follow the same pattern. Smoke tests export real STL artifacts so the main build variants are continuously checked as physical outputs, not just as abstract parameter sets.

AI Techniques And Patterns

There is no production AI layer here. The project is conventional parametric geometry tooling.

What Was Learned

  • Parametric geometry is a better fit for iterative hardware tuning than manual one-off modeling when repeatability matters.
  • Presets and config files make physical design changes easier to compare over time.
  • A CLI-first workflow can still feel product-like when the outputs are consistent, named well, and tied to clear print/assembly intent.
  • Always-on smoke exports are useful because they validate actual printable outputs, not just importability or config parsing.

Strengths And Tradeoffs

Strengths

  • Reproducible hardware iteration from source-controlled inputs.
  • Good fit for experimentation with balance, silhouette, print fit, and assembly style.
  • Clear separation between design logic and generated outputs.
  • Strong preset story for default two-piece builds, keyed variants, and mini one-piece paths.

Tradeoffs

  • CLI-only interaction raises the barrier for less technical users.
  • Physical validation still requires print time and slicer inspection, so the feedback loop is slower than pure software work.
  • The repo is optimized for serious fabrication iteration, not low-friction onboarding for casual users.