Thank you for your interest in contributing to VaultSync! We welcome issues, feature requests, and pull requests from everyone.
Before setting up your workspace, ensure you have the following installed:
- Rust 1.75+ (
rustup install stable) - Node.js 18+ (NPM v9+)
- wasm-pack (
cargo install wasm-pack) - Docker (required for running coordinator tests locally)
- Fork the repository on GitHub.
- Clone your fork locally:
git clone https://github.com/YOUR-USERNAME/vaultsync.git cd vaultsync - Run the developer environment setup script:
This script initializes dependencies, compiles NAPI/WASM files, and sets up configurations.
./scripts/setup-dev.sh
crates/vaultsync-core/— Core Rust sync enginecrates/vaultsync-wasm/— WASM browser bindingscrates/vaultsync-napi/— Node-API native bindingscrates/vaultsync-coordinator-*/— Coordinator protocol implementationscrates/vaultsync-cli/— Command-line toolssdk/packages/— TypeScript/React SDK packages (web,node,react,next)sdk/examples/— Ready-to-run demo appsdocs/— Specifications
We enforce strict linting and formatting gates in CI:
- Rust:
cargo fmt --check cargo clippy --workspace --all-targets -- -D warnings
- TypeScript / JavaScript:
npm run lint --prefix sdk npm run format:check --prefix sdk
Please run these commands locally before opening a pull request.
We follow the Conventional Commits format:
<type>(<scope>): <description>
[optional body]
Common Types:
feat: A new user-facing feature.fix: A bug fix.docs: Changes to documentation or specifications.style: Code style tweaks (whitespace, formatting, etc.).refactor: Code change that neither fixes a bug nor adds a feature.test: Adding or correcting tests.chore: Internal build/infra adjustments.
Before opening a PR, ensure all tests pass cleanly:
# Run unit, integration, chaos, and E2E tests across all platforms
./scripts/run-all-tests.shIf you introduce a new feature, you are expected to include corresponding unit or integration tests verifying the behavior.
- Create a branch for your feature or fix:
git checkout -b feat/your-awesome-feature
- Commit your changes following the Commit Conventions.
- Push your branch to your fork:
git push origin feat/your-awesome-feature
- Open a Pull Request against the
mainbranch of the official VaultSync repository. - Wait for the automated CI suite to run and pass.
- A maintainer will review your pull request shortly!
By contributing to VaultSync, you agree that your contributions will be licensed under the Apache License, Version 2.0.