# Contributing
Thank you for your interest in improving this project! We welcome contributions from everyone.
## ๐ Development Environment
To get started, ensure you have the following installed:
* **Rust** (latest stable version)
* **wasm-pack** (for WebAssembly builds)
* **Node.js** (optional, for testing JS bindings)
## ๐งช Testing
Before submitting a pull request, please make sure all tests pass. We use the standard Rust testing suite:
```bash
cargo test
```
This will run unit tests for geometry logic, G-Code generation, and formatting.
## ๐ฆ Building
The project supports multiple targets (Web, Node.js, and Bundlers). We provide a convenience script to build all targets and package them into an archive:
```bash
# Make sure the script is executable
chmod +x build.sh
# Run the build process
./build.sh
```
This script will:
1. Clean up old build artifacts.
2. Compile WASM modules for all supported environments into the `pkg/` directory.
3. Create a ZIP archive in the `assets/` folder.
## ๐ Pull Request Process
1. **Fork** the repository and create your branch from `main`.
2. If you've added code that should be tested, **add tests**.
3. Ensure your code follows the standard Rust formatting (`cargo fmt`).
4. Update the `README.md` or documentation if you introduced new features or API changes.
5. Open a **Pull Request** with a clear description of your changes.
## ๐ฌ Questions?
If you have any questions or find a bug, please open an **Issue** on GitHub.