CADmium is a web-based CAD program designed for home hobbyists to create 3D printable designs. Developed by CADmium-Co, the project is in its early prototype stage, aiming for an MVP release by April 2024. The project leverages Rust for its core engine and modern web technologies like SvelteKit and Tailwind for the UI. The development trajectory is positive, with active contributions focusing on both feature additions and stability improvements.
av8ta
Dimitris Zervas (dzervas)
Matt Ferraro (MattFerraro)
Shane (Sosho) Chang (soshochang)
The CADmium project is progressing well towards its MVP release with active development focusing on both new features and stability improvements. However, ongoing CI/CD pipeline issues pose a significant risk to productivity. The team shows strong individual contributions but limited direct collaboration, which could affect the resolution of complex issues. Overall, the project is on a positive trajectory but requires attention to CI/CD challenges and enhanced collaboration for sustained progress.
Developer | Avatar | Branches | PRs | Commits | Files | Changes |
---|---|---|---|---|---|---|
av8ta | 1 | 3/3/0 | 3 | 7 | 4601 | |
Matt Ferraro | 3 | 1/1/1 | 19 | 8 | 2223 | |
Dimitris Zervas | 1 | 3/1/0 | 1 | 4 | 119 | |
None (drewbt) | 0 | 3/0/0 | 0 | 0 | 0 | |
None (bherbruck) | 0 | 1/0/0 | 0 | 0 | 0 | |
Drayton Munster (dwmunster) | 0 | 1/0/0 | 0 | 0 | 0 | |
Shane (Sosho) Chang (soshochang) | 0 | 1/0/0 | 0 | 0 | 0 |
PRs: created by that dev and opened/merged/closed-unmerged during the period
CADmium is an innovative CAD (Computer-Aided Design) program designed to run directly in a web browser. It aims to provide a lightweight, user-friendly interface for home hobbyists who want to design parts for 3D printing and other personal projects. The project is spearheaded by the organization CADmium-Co and is currently in the early prototype stage, targeting an MVP (Minimum Viable Product) release by April 2024. The software leverages the Rust-based boundary representation engine truck, and integrates with modern web technologies like SvelteKit and Tailwind for its UI. The overall trajectory of the project is positive, with active development and a clear roadmap towards more comprehensive features and potential monetization through a hosted version.
README.md
(+2, -2).github/workflows/ci.yml
(+1, -1), .npmrc
(added, +3), package.json
(+2, -2), packages/cadmium/.gitignore
(+2, -1), packages/cadmium/package.json
(+6, -0), pnpm-lock.yaml
(+2552, -2001)README.md
(+23, -2), package.json
(+0, -1)applications/web/src/routes/(CADmium)/BottomBar.svelte
(+41, -9), packages/shared/projectUtils.ts
(+20, -0), packages/shared/typeGuards.ts
(+14, -2), packages/shared/types.d.ts
(+20, -13)README.md
(+3, -3)packages/cadmium/src/extrusion.rs
(+13, -12), packages/cadmium/src/main.rs
(+2, -2)packages/cadmium/src/main.rs
(+15, -1)packages/cadmium/src/oplog/mod.rs
(+1, -134)packages/cadmium/src/oplog/mod.rs
(+9, -8)packages/cadmium/src/main.rs
(+27, -12)packages/cadmium/src/oplog/mod.rs
(+18, -2)packages/cadmium/src/oplog/mod.rs
(+23, -9)packages/cadmium/src/main.rs
(+9, –2), packages/cadmium/src/oplog/mod.rs
(+55, –10)
– Collaborated with: None
– 8 days ago – Extruding a second solid is working
– Files: packages/cadmium/src/main.rs
(+103, –7), packages/cadmium/src/oplog/mod.rs
(+59, –45), packages/cadmium/src/project.rs
(+12, –0)
– Collaborated with: None
– 8 days ago – creating a solid now automatically creates truck faces
– Files: packages/cadmium/src/main.rs
(+98, –1), packages/cadmium/src/oplog/mod.rs
(+73, –2)
– Collaborated with: None
– 8 days ago – update to latest version of truck
– Files: packages/cadmium/Cargo.lock
(+358, –178), packages/cadmium/Cargo.toml
(+9, –9), packages/cadmium/src/extrusion.rs
(+4, –4), packages/cadmium/src/project.rs
(+2, –2), packages/cadmium/src/sketch/mod.rs
(+1, –1)
– Collaborated with: None
– 12 days ago – rename main function
– Files: packages/cadmium/src/main.rs
(+2, –2)
– Collaborated with: None
– 12 days ago – save output solid as obj
– Files: packages/cadmium/src/main.rs
(+6, –2)
– Collaborated with: None
– 12 days ago – extruding a solid seems to be working!
– Files: packages/cadmium/src/main.rs
(+9, –22), packages/cadmium/src/oplog/mod.rs
(+187, –12)
– Collaborated with: None
–14 days ago–extrusion modifications all work
– Files: packages / cadmium / src / extrusion .rs(+2,-2),
packages / cadmium / src / main .rs(+10,-5),
packages / cadmium / src / oplog / mod .rs(+68,-3)
– Collaborated with: None
–14 days ago–evolLog is now computing the project state as it goes
– Files: packages / cadmium / src / extrusion .rs(+4,-2),
packages / cadmium / src / main .rs(+22,-19),
packages / cadmium / src / oplog / mod .rs(+189,-195)
– Collaborated with: None
–14 days ago–last commit before changing to stateful oplog
– Files: packages / cadmium / src / main .rs(+6,-0),
packages / cadmium / src / oplog / mod .rs(+109,-1)
– Collaborated with: None
–18 days ago–support adding lines to sketches
–18 days ago–implement support for creating a sketch
–18 days ago–add project and workspace scoping to evolLog
–18 days ago–add stacked_cubes function
–22 days ago–make it run
–22 days ago--add AddSketchHandle
by Matt Ferraro(MattFerraro)19daysago--Replace Gizmo CubeGizmo(#9)Gizmo replaced CubeGizmo(custom copy Gizmo)update axis colors,redu font size add font color remove circle remove opacity changeadd gray cube position x y z axis textCubeGizmo-fix axis label text getting cut off certain positionsCubeGizmo-hide axis text when axis orthogonal viewCubeGizmo-orient camera when faces clickedCubeGizmo-add triangle controls rotate when triangle controls clickedCubeGizmo-fix triangle up down accidentally deleted lineCubeGizmo-remove unused code original Gizmorun formatter rename.d.ts files.ts remove unused CubeGizmoEvents CubeGizmoSlots.ts file by Shane(Sosho)Chang(soshochang)
No recent commits.
No recent commits.
No recent commits.
The recent activities indicate that Matt Ferraro is the most active contributor over the past two weeks. His focus has been on stabilizing core functionalities like extrusion and fusion of solids within the CAD system. He has also been updating documentation and improving test coverage.
av8ta has been actively involved in maintaining build configurations and updating dependencies. This includes significant changes to CI workflows and package management files.
Dimitris Zervas contributed a notable feature allowing users to rename workbenches within the application.
Shane Chang's last significant contribution was replacing the Gizmo component with CubeGizmo for better user interaction in visualizing axes.
There are no recent contributions from bherbruck, dwmunster or drewbt.
The collaboration appears limited based on commit messages; most contributors seem to work independently on their respective tasks. This could be due to the modular nature of the project or efficient task allocation among team members.
Overall,the project shows healthy development activity focusing both on new features and stability improvements.The team is making steady progress toward their MVP release target.
Recent GitHub issue activity for the CADmium project has been notably high, with several issues being created and closed within the last few days. This suggests a period of intense development and possibly a sprint to address critical tasks.
Several issues (#20, #17, #16) involve complex technical challenges such as implementing new features or refactoring existing code. The presence of detailed comments and discussions indicates active collaboration among contributors. Notably, issues like #17 and #16 involve significant mathematical and algorithmic work, suggesting a focus on improving the core functionality and stability of the software.
Issues like #24 (Failed Deployments) and #25 (Rework CI triggers) highlight ongoing problems with the project's CI/CD pipeline, which could be affecting productivity and reliability. The urgency of these issues is underscored by their recent creation and the fact that they remain open.
Another theme is the enhancement of user experience and interface elements, as seen in issues #27 (Implement Zoom To Pointer) and #16 (CubeGizmo - add curved arrow controls). These improvements are crucial for making the software more intuitive and user-friendly.
#30: Rust build touchup
#29: Add devcontainer
#27: Implement Zoom To Pointer
#26: Add Rust build and testing instructions to the README
#25: Rework CI triggers
#24: Failed Deployments
#20: [DRAFT] Ability to create sketches against solid faces
#17: Move Constraint solver into a separate crate and put it onto a solid mathematical foundation
#16: CubeGizmo - add curved arrow controls and light blue color on controls when moused over
#14: Simplify angle derivative in apply_torsion_forces
#17: Move Constraint solver into a separate crate and put it onto a solid mathematical foundation
#16: CubeGizmo - add curved arrow controls and light blue color on controls when moused over
#14: Simplify angle derivative in apply_torsion_forces
PR #30: Rust build touchup
build:dev
before listening for Rust file changes.package.json
files.PR #29: Add devcontainer
.devcontainer/devcontainer.json
, .devcontainer/scripts/on-create.sh
, .github/dependabot.yml
PR #20: [DRAFT] Ability to create sketches against solid faces
PR #16: CubeGizmo - add curved arrow controls and light blue color on controls when moused over
PR #14: Simplify angle derivative in apply_torsion_forces
apply_torsion_forces
.PR #13: Added feature rotate about scene floor
PR #12: Update +page.svelte
PR #10: Update README.md
PR #8: Start working on EvolutionLog and OpLog
PR #28: Readme: fix some links
PR #23: Add watching & rebuilding of rust sourcecode
PR #21: Add ability to rename the workbench
PR #19: Update README.md
PR #15: Update dev instructions
package.json
.PR #4: Test out github actions
& 8. Other closed PRs such as PRs #9, #7, #6, #5, #3, and #2 were merged successfully with various improvements ranging from fixing tests, refactoring code, adding comments, fixing deployment issues, and converting projects to TypeScript.
This pull request aims to improve the Rust development build process and fix continuous integration (CI) issues. The key changes include:
CI Workflow Adjustments:
Package Scripts Updates:
package.json
and packages/cadmium/package.json
..github/workflows/ci.yml
)pnpm build:wasm
and pnpm turbo run build
steps.pnpm run test:rust
).pnpm build
.- - name: Build cadmium
- run: pnpm build:wasm
+ - name: Build cadmium
+ run: pnpm build
- - name: Build
- env:
- BASE_PATH: "/${{ github.event.repository.name }}"
- run: pnpm turbo run build
- - name: Test Rust
- run: pnpm run test:rust
package.json
"test:rust": "cd packages/cadmium && cargo test"
).engines.pnpm
version requirement. "test": "turbo run test",
- "test:rust": "cd packages/cadmium && cargo test",
"clean": "turbo run clean",
"lint": "turbo run lint",
- "format": "turbo run format",
- "build:wasm:dev": "wasm-pack build --target web packages/cadmium --dev --no-typescript",
- "build:wasm": "wasm-pack build --target web packages/cadmium && ./packages/cadmium/patchpackage.cjs"
+ "format": "turbo run format"
},
"engines": {
"node": ">=20.13.1",
- "pnpm": ">=9.1.2"
+ "pnpm": ">=9.1.0"
packages/cadmium/package.json
- "dev": "onchange 'src/**/*.rs' -- pnpm run build:dev",
- "build:dev": "cargo check && pnpm run build:wasm",
- "build:wasm": "wasm-pack build --target web && ./patchpackage.cjs",
+ "dev": "pnpm run build:dev; onchange 'src/**/*.rs' -- pnpm run build:dev",
+ "build:dev": "cargo check && wasm-pack build --target web --dev && ./patchpackage.cjs",
+ "build": "wasm-pack build --target web && ./patchpackage.cjs",
The changes in this PR are well-targeted towards improving the development workflow and CI efficiency. Here are some observations:
Efficiency:
Simplicity:
package.json
scripts simplify the commands, making them easier to understand and maintain.Correctness:
--dev
), which is crucial for accurate testing during development.cargo check
before building WASM, it ensures that only compilable code proceeds, reducing potential errors early in the pipeline.Maintainability:
Documentation:
Testing:
Overall, this PR significantly improves the development workflow and CI efficiency for the CADmium project, making it a valuable addition to the codebase.
.github/workflows/ci.yml
CI
that triggers on various events like push
and pull_request
.ubuntu-latest
.actions/checkout
, actions/cache
, pnpm/action-setup
, actions/setup-node
, and jetli/wasm-pack-action
.ubuntu-latest
.actions/deploy-pages
.actions/cache
) and concurrent deployment control is efficient.applications/web/src/routes/(CADmium)/BottomBar.svelte
$:
) to manage state.{#each}
block for iterating over workbenches.packages/shared/projectUtils.ts
packages/shared/typeGuards.ts
packages/shared/types.d.ts
Entity
, Project
, WorkBench
).packages/cadmium/src/extrusion.rs
packages/cadmium/src/main.rs
packages/cadmium/src/oplog/mod.rs
Overall, the source code files exhibit good structure and quality with a focus on modularity, type safety (using TypeScript), efficient CI/CD practices, and comprehensive utility functions. There are areas where additional documentation or modularization could further enhance maintainability, especially in larger files like extrusion.rs
. The use of logging is prevalent across files, which is beneficial during development but should be managed appropriately in production environments.