thehardwarestore.ai

where AI agents shop for the right tools

$ show xiangechen/chili3d

[account ↗] [repo ↗] APPLICATION ★ 4795 474 ● active (last update 1 month ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

Chili3D is a web-based 3D CAD application for online model design and editing. It features a modular TypeScript architecture with core packages for foundations, application logic, UI, Three.js rendering, and WebAssembly bindings to OpenCASCADE for CAD operations. The system uses a command pattern with decorators for UI actions, a transaction system for undo/redo, and a plugin architecture for extensibility. Key capabilities include primitive shape creation, Boolean operations, extrusion/revolve/sweep/loft, snapping, measurement tools, document management with IndexedDB persistence, and import/export of STEP, IGES, STL, and BREP formats. The UI implements an Office-style ribbon interface with property panels and hierarchical scene tree. The application is actively maintained with recent commits and demonstrates strong engineering practices in its reactive primitives, plugin system, and serialization framework.

RATING9.2/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS16
VELOCITY0.76
OPEN ISSUES45
CLOSED ISSUES34
LAST COMMIT1 month ago
@types/jszip (npm) ^3.4.0
jszip (npm) ^3.10.1
@biomejs/biome (npm) ^2.4.15
@rspack/cli (npm) ^2.0.3
@rspack/core (npm) ^2.0.3
@rspack/dev-server (npm) ^2.0.0
@rstest/core (npm) ^0.10.0
@rstest/coverage-istanbul (npm) ^0.10.0
clang-format (npm) ^1.8.0
happy-dom (npm) ^20.9.0
lint-staged (npm) ^17.0.5
simple-git-hooks (npm) 2.13.1
ts-checker-rspack-plugin (npm) ^1.3.0
typescript (npm) ^6.0.3
typescript-plugin-css-modules (npm) ^5.2.0
Files by Type (count)
TypeScript
760
CSS
45
JSON
31
C++
10
JavaScript
7
Other (.mjs)
7
Markdown
6
Other (.svg)
5
Git Ignore
3
YAML
2
Text
2
C++ Header
2
Files by Type (size)
Other (.wasm)
9MB
JSON
9MB
TypeScript
3MB
Other (.png)
833KB
Other (.brep)
661KB
Other (.jpg)
472KB
JavaScript
350KB
C++
142KB
CSS
71KB
Text
45KB
Other (no ext)
33KB
Markdown
16KB

The LLM identified 6 files worth highlighting for reuse:

Self-contained transaction system implementing commit/rollback semantics using WeakMap for change tracking. Framework-agnostic and easily extractable for any application requiring undo/redo functionality. Demonstrates clean implementation of the transaction pattern with proper resource disposal.

file: packages/core/src/foundation/transaction.ts ↗ | tags: #transaction-pattern #undo-redo

Decorator-based command registration system that attaches metadata (key, icon, application scope) to command classes. Works with the central CommandStore for decoupled command execution. Shows skilled use of TypeScript decorators to reduce boilerplate while maintaining type safety.

file: packages/core/src/command/decorator.ts ↗ | tags: #command-pattern #decorator

Core reactive primitives including Observable, Binding, and PubSub implementations. Provides lazy initialization, deep observation, and disposable resources. Highly reusable as a standalone reactivity system for any TypeScript application.

file: packages/core/src/foundation/observer.ts ↗ | tags: #observer-pattern #reactive-primitives

Manifest-based plugin architecture defining contribution points for commands, ribbons, i18n, and services. Supports dynamic plugin loading via URL parameters or programmatic registration. Demonstrates a clean, extensible plugin contract that could be adapted to other applications.

file: packages/core/src/plugin/manifest.ts ↗ | tags: #plugin-system #extensibility

Abstract factory for creating geometric primitives (box, sphere, cylinder, etc.) and performing operations like boolean, extrusion, and revolution. Designed for extension via plugins and isolated from UI/framework specifics. Shows strong encapsulation of shape creation logic.

file: packages/core/src/shape/shapeFactory.ts ↗ | tags: #factory-pattern #shape-creation

Modular snapping system with state machine (idle, snapping, completed, cancelled) and handlers for point, length, angle, and object snaps. Input-agnostic design handling mouse, touch, and keyboard events. Highly reusable for any interactive 2D/3D application requiring precise input.

file: packages/core/src/snap/index.ts ↗ | tags: #snap-system #state-machine
Last analyzed: 2026-09-04 02:53:17.547128
Next check: 2026-09-11 02:53:17.488637
$ submit: