A browser-based 3D CAD application for online model design and editing
A browser-based 3D CAD application for online model design and editing
A browser-based 3D CAD application for online model design and editing.
Chili3D is an open-source browser-based 3D CAD (Computer-Aided Design) application built with TypeScript. It achieves near-native performance by compiling OpenCascade (OCCT) to WebAssembly and integrating with Three.js, enabling powerful online modeling, editing, and rendering — all without requiring local installation.
You can access Chili3D online at:
Chili3D supports a runtime plugin system with dynamic loading via URL parameters (?plugin=). Example plugins include:
Chili3D uses an npm workspace monorepo under packages/ with an interface-driven, pluggable backend architecture:
web ──> builder ──> app ──> core
──> i18n ──> core
──> three ──> core
──> ui ──> core + element
──> wasm ──> core
──> storage ──> core
element ──> core
core — Abstract interfaces (IShape, IShapeFactory), math (XYZ, Matrix4, Plane), document model, reactive data (Observable, Binding, PubSub), Result<T,E>, transactions/undo/redo, commands, serialization, plugin system, service container, UI abstractionswasm — Concrete ShapeFactory calling into OCCT via Emscripten bindingsthree — Three.js viewport, camera controller, visual objects, highlighter, outline pass, gizmo, mesh exportelement — Custom reactive DOM elements (radio groups, expanders, data converters)ui — Application chrome: main window, ribbon/toolbar, property panels, project tree, dialogs, toast, status barapp — Concrete Application, body node classes, command implementations, CommandService, HotkeyServicebuilder — AppBuilder with a fluent .useIndexedDB().useWasmOcc().useThree().useUI().build() chain and default ribbon layouti18n — Locale data (en, zh-cn, pt-br)storage — IndexedDB persistence layerweb — Entry point: calls AppBuilder, shows loading screen, parses URL parametersYou can view the full changelog here.
For Chinese users, you can also browse the media.
Clone the repository
git clone https://github.com/xiangechen/chili3d.git
cd chili3d
Install dependencies
npm install
Start the development server:
npm run dev # Launches at http://localhost:8080
Build the application:
npm run build
The prebuilt WASM module is included in the repository. If you want to build it from source:
Set up WebAssembly dependencies (one-time setup):
npm run setup:wasm
Build the WebAssembly module:
npm run build:wasm
npm run test # Run all tests (Rstest + Happy-DOM)
npm run testc # Tests with coverage
npm run check # Biome lint + auto-fix
npm run format # Biome + clang-format across all files
You can also deploy with Docker:
docker compose up -d # Builds and serves the app at http://localhost:8080
I (IShape, ICommand)camelCase functions/variables, PascalCase classes, UPPER_SNAKE_CASE constantsimport type { IFoo } from "..."We welcome contributions! Please feel free to submit pull requests or open issues.
Before submitting a PR, run npm run check to ensure your code passes linting.
Distributed under the GNU Affero General Public License v3.0 (AGPL-3.0). For commercial licensing options, contact [email protected].
Full license details: LICENSE
The C++ WASM module (cpp/) is licensed under LGPL-3.0.
Chili3D uses Microsoft Clarity for growth analytics. To disable data collection, remove the Clarity script from public/index.html.
This software is provided "AS IS," and the authors and contributors hereby disclaim all express and implied warranties. The user shall bear full responsibility for any and all risks and potential consequences arising from the use of this software. Such risks and consequences include, but are not limited to:
No open issues yet, or sync has not completed.