Thank you for your interest in contributing to BitVault Wallet! This document provides guidelines and instructions for contributing to this project.
Please read and follow our Code of Conduct. We expect all contributors to adhere to these guidelines to ensure a positive and respectful community.
BitVault is a Bitcoin wallet application that handles sensitive cryptographic operations and user funds. Security is our highest priority.
Before contributing, please review our Security Policy.
When working on features that involve:
- Cryptographic operations
- Key management
- Transaction handling
- Network communication
- Data storage
Please pay special attention to the security implications of your changes and document any security considerations in your pull requests.
For security issues, please follow the responsible disclosure process outlined in our Security Policy rather than filing a public issue.
BitVault is a Rust workspace project with the following crates:
bitvault-app- Main application crate that ties everything togetherbitvault-core- Core wallet functionality and cryptographic operationsbitvault-common- Shared utilities and typesbitvault-ipc- Inter-process communication between componentsbitvault-ui- User interface components
- Rust (latest stable)
- Cargo (Rust package manager)
- Familiarity with Bitcoin concepts (for core functionality)
- Fork the repository
- Clone your fork locally
- Install dependencies with
make setup - Start the development server with
make dev
mainbranch is always deployable- Create feature branches from
mainusing the formatfeature/your-feature-name - Create bugfix branches using
fix/issue-description
Follow conventional commits format:
type(scope): short description
Longer description if needed
Types include:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Formatting changesrefactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
- Update your feature branch with the latest changes from
main - Ensure tests pass with
make test - Ensure linting passes with
make lint - Open a PR against the
mainbranch - Fill out the PR template completely
All submissions require review before being merged. Reviewers will check for:
- Functionality
- Security considerations
- Code quality
- Test coverage
- Documentation
- Write unit tests for new functionality
- Ensure existing tests continue to pass
- Include integration tests for components
- For Bitcoin-specific functionality, include test vectors from the Bitcoin Core test suite where applicable
Run tests with:
make test
- Update documentation when changing functionality
- Document APIs using standard formats
- Include examples where appropriate
- Document security considerations explicitly
- Rust: Follow Rustfmt conventions
- Follow project-specific coding conventions
By contributing to BitVault Wallet, you agree that your contributions will be licensed under the project's Apache 2.0 License.