Skip to content

Latest commit

 

History

1,650 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bitbybit Monorepo

Open-source 3D CAD algorithms for the web - MIT licensed. This monorepo contains all Bitbybit NPM packages plus example applications.

License

Source code in packages/, languages/, and examples/ is MIT licensed. Documentation text in docs/ is CC BY 4.0. Logos, trademarks, and media assets are not open-source — see CONTENT-LICENSE.md for details.

Essential introduction by Matas
Introduction by Matas Ubarevicius

Picture showing bitbybit.dev platform

Quick Start

Scaffold a fully-configured 3D CAD project in seconds:

npx @bitbybit-dev/create-app my-project

The CLI first asks you to pick an app type:

  • Frontend - Browser-based 3D/CAD app. Choose a game engine (Three.js, Babylon.js, or PlayCanvas) and OCCT architecture (32-bit, 64-bit, or 64-bit MT). You get a Vite + TypeScript project with all three CAD kernels (OCCT, JSCAD, Manifold) pre-configured.
  • CAD Cloud - Full-stack project with server-side CAD via our CAD Cloud API. Choose a backend template (Hono + SDK, Hono + REST, Node.js + SDK, Node.js + REST, or .NET + REST). You get a React + Three.js frontend that proxies requests through your backend - your API key never leaves the server.
cd my-project
npm install
npm run dev

Support the Mission

Subscribe - Silver or Gold plan | Get API Key for CAD Cloud

Check out 3D Bits app for Shopify - interactive 3D product configurators for e-commerce.

Your subscription directly funds continued open-source development of these packages.

Important Topics

Topic Link
Getting Started https://learn.bitbybit.dev/learn/getting-started/overview
TypeScript API Reference https://docs.bitbybit.dev
API Reference - OCCT kernel https://docs.bitbybit.dev/classes/Bit.OCCT
API Reference - JSCAD kernel https://docs.bitbybit.dev/classes/Bit.JSCAD
API Reference - Manifold kernel https://docs.bitbybit.dev/classes/Bit.Manifold
NPM Packages Intro https://learn.bitbybit.dev/learn/npm-packages/intro
Integrate with Three.js https://learn.bitbybit.dev/learn/npm-packages/threejs/start-with-three-js
Integrate with BabylonJS https://learn.bitbybit.dev/learn/npm-packages/babylonjs/start-with-babylon-js
Integrate with PlayCanvas https://learn.bitbybit.dev/learn/npm-packages/playcanvas/start-with-playcanvas
CAD Cloud API https://learn.bitbybit.dev/api/cloud-api
Script Runners https://learn.bitbybit.dev/learn/runners/intro
3D Bits for Shopify https://learn.bitbybit.dev/learn/3d-bits/intro
AI-Assisted Development https://learn.bitbybit.dev/learn/using-ai-with-bitbybit/intro
Unit Testing Approach https://learn.bitbybit.dev/learn/github/unit-tests
Live Unit Test Coverage https://github.com/bitbybit-dev/bitbybit/actions/workflows/verify.yml
Blog https://learn.bitbybit.dev/blog

NPM Packages

Package Description
@bitbybit-dev/babylonjs BabylonJS engine integration for drawing CAD geometry
@bitbybit-dev/threejs Three.js engine integration for drawing CAD geometry
@bitbybit-dev/playcanvas PlayCanvas engine integration for drawing CAD geometry
@bitbybit-dev/core Core assembly layer combining all CAD kernels
@bitbybit-dev/occt OpenCascade CAD kernel (works in Node.js & browser)
@bitbybit-dev/occt-worker OCCT via WebWorker (non-blocking, browser only)
@bitbybit-dev/manifold Manifold fast mesh booleans (works in Node.js & browser)
@bitbybit-dev/manifold-worker Manifold via WebWorker (non-blocking, browser only)
@bitbybit-dev/jscad JSCAD solid modeling (works in Node.js & browser)
@bitbybit-dev/jscad-worker JSCAD via WebWorker (non-blocking, browser only)
@bitbybit-dev/base Base math/vector/matrix algorithms used by all packages
@bitbybit-dev/create-app CLI tool to scaffold 3D/CAD projects
@bitbybit-dev/cad-cloud-sdk TypeScript SDK for the CAD Cloud API

NPM Package Architecture

Schematic diagram showing the architecture of all NPM packages

Example Applications

All examples live in the examples/ directory of this monorepo:

App Engine Source Code
Hex Shell Three.js GitHub
Cup Configurator Three.js GitHub
Hex House Concept Three.js GitHub
Starter Template BabylonJS GitHub
Starter Template Three.js GitHub
Starter Template PlayCanvas GitHub
Terrace Furniture BabylonJS Closed source

Bitbybit Platform

Beyond these open-source NPM packages, the Bitbybit platform includes:

Community

Development Setup

Contributions

If you're interested in contributing please check our Contribution guidelines & code of conduct

First Time Setup and Testing

For first-time developers working on this project, follow these steps to set up the development environment and run all unit tests:

Prerequisites

  • Node.js (v16 or higher recommended)
  • npm (comes with Node.js)
  • Git

Quick Start

  1. Clone the repository:

    git clone https://github.com/bitbybit-dev/bitbybit.git
    cd bitbybit
  2. Install pnpm 11 once (the packages are one pnpm workspace; the packageManager field pins the exact version):

    npm install -g pnpm@11
  3. Run the complete first-time setup (this will install all dependencies, build all packages, and run all unit tests):

    npm run first-time-setup

Available Commands

  • npm run first-time-setup - Complete setup for new developers (installs dependencies, builds packages, runs tests)
  • npm run setup - Install dependencies and build all packages without running tests
  • npm run setup-and-test - Install dependencies, build packages, and run all unit tests
  • npm run test - Run all unit tests (requires packages to be built first)
  • npm run test:report - One report over every suite's last results (files, tests, failures, skipped, coverage); written to the job summary on GitHub Actions
  • npm run ci-packages - Install dependencies for all packages (one pnpm install --frozen-lockfile for the workspace)
  • npm run refresh-lockfile - Rewrite pnpm-lock.yaml after a dependency change, without touching node_modules
  • npm run build-packages - Build and stage all packages (tsc -b over generated project references, run by pnpm in dependency order)
  • npm run rebuild-all-packages - Empty every dist, then build all packages
  • npm run gen:references - Regenerate the TypeScript project references from the package manifests after a dependency change
  • npm run check:references - Fail if the project references and the manifests disagree (the first step of npm test)
  • npm run lint - ESLint over the repository, green by the committed suppression baseline; a new finding fails
  • npm run typecheck:strict - Every package's strict typecheck against its committed baseline (new errors only)
  • npm run check:strict-baselines - Fail if any package's strict baseline differs from what its code produces
  • npm run api:check - Fail if the public API surface of base or core differs from the committed report in its etc/ folder
  • npm run api:update - Regenerate those API reports after a deliberate change to the public surface
  • npm run check:tarballs - Pack every built package and install the tarballs together into an empty project, as a user would

Running Individual Package Tests

You can also run tests for individual packages:

  • npm run test-base - Test base package
  • npm run test-occt - Test OCCT package
  • npm run test-core - Test core package
  • npm run test-jscad - Test JSCAD package
  • npm run test-manifold - Test Manifold package
  • npm run test-threejs - Test ThreeJS package
  • npm run test-playcanvas - Test PlayCanvas package
  • npm run test-babylonjs - Test BabylonJS package

Troubleshooting

If you encounter issues during setup:

  1. Make sure you have Node.js v16+ installed
  2. Clear npm cache: npm cache clean --force
  3. Delete node_modules at the root and under packages/dev/*, then run pnpm install

Major Dependencies

BabylonJS, ThreeJS, PlayCanvas, OpenCascade, Manifold, JSCAD, and Verbnurbs - the last of these deprecated, no longer maintained upstream, and removed in the next major version.

About

Monorepo for 3D algorithms of Bitbybit platform, which helps programming geometry on the browser. Use with ThreeJS, BabylonJS or PlayCanvas. Build your own core integration or execute algorithms in NodeJS.

Topics

Resources

Code of conduct

Contributing

Stars

201 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages