JSCAD is a set of modular, browser and command line tools for creating parametric 2D and 3D designs with JavaScript code. It provides a quick, precise and reproducible method for generating 3D models, and is especially useful for creating ready-to-print 3D designs.
The tool solves the problem of programmatically generating 2D and 3D designs by letting developers write JavaScript code instead of using graphical modeling interfaces. It supports parametric design, meaning models can be defined with variables and logic that make them easy to modify and regenerate. The approach works through a modular architecture where individual components handle different concerns: geometry creation, format conversion, rendering, and user interfaces.
JSCAD suits developers and makers who want to version-control their designs, automate model generation, or integrate design creation into larger workflows. The project offers multiple deployment options to match different needs: an online browser-based editor requiring no installation, a self-hostable web interface, a command-line tool for server-side generation with Node.js, an experimental desktop application, and individual NPM packages for custom integration. This flexibility means you can use JSCAD as a complete standalone tool or cherry-pick specific components into existing projects. The modular design also lets you create custom renderers, build custom user interfaces, or use only the format handlers you need without pulling in unnecessary dependencies.
Development is maintained by volunteers within the JSCAD Organization. The project is structured as a monorepo using Lerna-Lite to manage multiple packages and tools together. The codebase supports a wide range of 2D and 3D formats including STL, OBJ, AMF, 3MF, DXF, SVG, and X3D, reflecting ongoing work to expand format compatibility. Individual packages are published to NPM under the @jscad namespace, allowing independent use and versioning of components.