Contributing

Contributions are welcome! Help make Nokvault better for everyone.

How to Contribute

There are many ways to contribute to Nokvault:

  • Report bugs
  • Suggest new features
  • Submit pull requests
  • Improve documentation
  • Write tests
  • Help other users

Getting Started

To start contributing:

  1. Fork the repository on GitHub
  2. Clone your fork locally
  3. Create a feature branch
  4. Make your changes
  5. Test your changes
  6. Submit a pull request
# Fork and clone
git clone https://github.com/jimididit/nokvault.git
cd nokvault

# Create a feature branch
git checkout -b feature/amazing-feature

# Make your changes, then commit
git commit -m "Add amazing feature"

# Push to your fork
git push origin feature/amazing-feature

Development Setup

Set up your development environment:

# Install dependencies
go mod download

# Run tests
go test ./...

# Build the project
# Windows
go build -o nokvault.exe ./cmd/nokvault
# Linux/macOS  
go build -o nokvault ./cmd/nokvault

# Run with your changes
./nokvault --version

Code Standards

Please follow these guidelines:

  • Follow Go conventions and style guide
  • Write clear, descriptive commit messages
  • Add tests for new features
  • Update documentation as needed
  • Ensure all tests pass before submitting
  • Run go fmt and go vet before committing

Testing

Ensure your changes are tested:

# Run all tests
go test ./...

# Run tests with coverage
go test -cover ./...

# Run tests for a specific package
go test ./internal/crypto/...

Aim for high test coverage, especially for security-critical code.

Pull Request Process

When submitting a pull request:

  1. Ensure your code follows the project's style guidelines
  2. Add or update tests as needed
  3. Update documentation if you've changed functionality
  4. Ensure all tests pass
  5. Write a clear description of your changes
  6. Reference any related issues

Reporting Issues

When reporting bugs, please include:

  • Nokvault version
  • Operating system and version
  • Steps to reproduce the issue
  • Expected behavior
  • Actual behavior
  • Error messages or logs

Security Issues

If you discover a security vulnerability, please:

  • Do not open a public issue
  • Email security concerns privately
  • Allow time for the issue to be addressed before disclosure

Questions?

If you have questions about contributing:

  • Open an issue for discussion
  • Check existing issues and pull requests
  • Review the codebase to understand patterns