Thanks for your interest in contributing! Here's how to get started.
Open a bug report with steps to reproduce, expected behavior, and your OS/version.
Open a feature request describing the problem and your proposed solution.
- Rust (stable toolchain)
- Node.js (LTS)
- Tauri CLI:
cargo install tauri-cli - macOS: Xcode Command Line Tools
- Linux:
sudo apt install libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libgtk-3-dev
git clone https://github.com/eladbash/void.git
cd void
# Run tests
cargo test
# Build the core library
cargo build
# Run the Tauri app in dev mode
cargo tauri devcrates/
deepclean-core/ # Scanning engine, models, safety checker, action executor
src/
scanner/ # Per-ecosystem scanners (rust.rs, node.rs, python.rs, ...)
action/ # Clean action execution with safety gates
model.rs # Data types (CleanableItem, Ecosystem, RiskLevel, etc.)
safety.rs # Path safety checker
staleness.rs # Last-modified staleness detection
config.rs # App configuration
deepclean-app/ # Tauri 2 desktop app
src/
commands.rs # Tauri IPC commands
tray.rs # System tray setup
state.rs # App state management
- Create
crates/deepclean-core/src/scanner/myecosystem.rs - Implement the
EcosystemScannertrait - Add the ecosystem variant to
Ecosystemenum inmodel.rs - Register it in
scanner/mod.rsandcommands.rs
- Run
cargo fmtbefore committing - Run
cargo clippy -- -D warningsand fix all warnings - Write tests for new scanners and safety-critical code
- Fork the repo and create a feature branch
- Make your changes with tests
- Ensure
cargo testandcargo clippypass - Open a PR with a clear description of the changes
This project follows the Contributor Covenant. Be kind and constructive.