Skip to content

Latest commit

 

History

History
129 lines (98 loc) · 3.07 KB

File metadata and controls

129 lines (98 loc) · 3.07 KB

Contributing to Soteric

Thank you for your interest in contributing to Soteric! We welcome contributions from the community, whether it's bug reports, feature requests, documentation improvements, or code changes.

Getting Started

Prerequisites

  • Rust 1.70 or later
  • Cargo (comes with Rust)
  • For macOS features: Xcode development tools

Setting Up Your Environment

  1. Fork the repository
  2. Clone your fork:
    git clone https://github.com/yourusername/Soteric.git
    cd Soteric
  3. Add the upstream repository:
    git remote add upstream https://github.com/harsh-seth/Soteric.git
  4. Build the project:
    cargo build
  5. Run tests:
    cargo test

Development Workflow

Before You Start

  1. Check existing issues and pull requests to avoid duplicate work
  2. For new features, open an issue to discuss your approach before implementing
  3. Keep commits focused and atomic

Code Style

  • Follow Rust conventions enforced by rustfmt:
    cargo fmt
  • Lint your code with clippy:
    cargo clippy -- -D warnings
  • Write descriptive commit messages explaining the "why" behind changes

Testing

  • Add tests for new functionality
  • Ensure all tests pass locally:
    cargo test
  • Test on macOS if your changes touch biometric authentication
  • See TESTING.md for detailed testing documentation

Submitting Changes

Pull Request Process

  1. Create a feature branch from main:
    git checkout -b feature/your-feature-name
  2. Make your changes and commit them with clear messages
  3. Format and lint your code:
    cargo fmt
    cargo clippy
  4. Push to your fork:
    git push origin feature/your-feature-name
  5. Open a pull request against the main repository with:
    • A clear title describing your change
    • A description of what changed and why
    • Reference to any related issues (e.g., "Fixes #123")
    • Evidence that tests pass locally

PR Guidelines

  • Keep PRs focused on a single feature or fix
  • Keep changes minimal and easy to review
  • Respond to feedback promptly
  • Rebase and force-push to resolve conflicts (don't merge main into your branch)

Reporting Issues

Bug Reports

Include:

  • Expected behavior
  • Actual behavior
  • Steps to reproduce
  • OS and Rust version (rustc --version)
  • Relevant code snippets or configuration

Feature Requests

Include:

  • Use case and motivation
  • Proposed API or behavior
  • Alternative approaches considered

Code of Conduct

  • Be respectful and inclusive
  • Welcome diverse perspectives
  • Report unacceptable behavior to the maintainers

License

By contributing to Soteric, you agree that your contributions will be licensed under the same license as the project (check LICENSE file for details).

Questions?

Feel free to open a discussion issue or reach out to the maintainers directly. We're here to help!


Thank you for making Soteric better!