Contribute

How to contribute to CoraleVault

Welcome Contributors

CoraleVault is an open-source project, and we welcome contributions from the community! Whether you’re fixing bugs, adding features, improving documentation, or spreading the word, your help is appreciated.


Ways to Contribute

๐Ÿ› Report Bugs

Found a bug? Please report it!

  1. Check existing issues first
  2. If it’s new, create an issue
  3. Include:
    • Description of the bug
    • Steps to reproduce
    • Expected behavior vs actual behavior
    • Platform (OS, version)
    • Version of CoraleVault
    • Screenshots if applicable

๐Ÿ’ก Suggest Features

Have an idea for a new feature?

  1. Check existing discussions
  2. Open a new discussion
  3. Describe:
    • Problem you’re trying to solve
    • Proposed solution
    • Alternatives considered
    • Use case examples

๐Ÿ”ง Submit Code

Want to fix a bug or add a feature?

  1. Fork the repository
  2. Create a branch: git checkout -b feature/your-feature-name
  3. Make your changes
  4. Test thoroughly
  5. Commit: Follow commit message guidelines
  6. Push: git push origin feature/your-feature-name
  7. Open a Pull Request

๐Ÿ“ Improve Documentation

Documentation is always welcome!

  • Fix typos and grammar
  • Add examples and clarifications
  • Write tutorials
  • Translate to other languages
  • Improve README or guides

๐Ÿงช Write Tests

Help improve code quality:

  • Add unit tests for existing code
  • Add integration tests
  • Improve test coverage
  • Fix failing tests

๐ŸŽจ Design & UX

Contribute to user experience:

  • Suggest UI improvements
  • Create mockups or designs
  • Improve accessibility
  • Design icons or graphics

๐ŸŒ Translate

Help make CoraleVault accessible to non-English speakers:

  • Translate the interface
  • Translate documentation
  • Review existing translations

๐Ÿ“ข Spread the Word

Help others discover CoraleVault:

  • Star the project on GitHub โญ
  • Share on social media
  • Write blog posts or reviews
  • Recommend to friends and colleagues

Development Setup

Prerequisites

  • Git
  • C++17 compatible compiler
  • wxWidgets 3.0+
  • Crypto++ library

Clone and Build

1
2
3
4
5
6
7
8
# Clone your fork
git clone https://github.com/YOUR-USERNAME/PasswordVault.git
cd PasswordVault

# Add upstream remote
git remote add upstream https://github.com/Coralesoft/CoraleVault.git

# Build (see BUILD.md for platform-specific instructions)

See Build Instructions for detailed setup.


Contribution Guidelines

Code Style

  • Standard: C++17
  • Indentation: 4 spaces (no tabs)
  • Line length: 120 characters maximum
  • Naming conventions:
    • Classes: PascalCase
    • Functions: PascalCase
    • Variables: camelCase
    • Member variables: camelCase_ (trailing underscore)
    • Constants: UPPER_SNAKE_CASE

Commit Messages

Format:

<type>: <subject>

<body>

<footer>

Types:

  • feat: New feature
  • fix: Bug fix
  • docs: Documentation changes
  • style: Code style changes (formatting)
  • refactor: Code refactoring
  • test: Adding or updating tests
  • chore: Build process, dependencies, etc.

Example:

feat: Add auto-lock timeout configuration

Allow users to configure the auto-lock timeout in preferences.
Default timeout is 5 minutes, configurable from 1-60 minutes.

Closes #42

Pull Request Guidelines

  1. One feature per PR - Keep changes focused
  2. Update documentation - Document new features
  3. Add tests - Test your changes
  4. Follow code style - Match existing code
  5. Test on multiple platforms - Windows, Linux, macOS if possible
  6. Keep commits clean - Squash “fix typo” commits
  7. Reference issues - Link to related issues

What to Avoid

โŒ Large, unfocused PRs โŒ Breaking changes without discussion โŒ Code without tests โŒ Ignoring CI failures โŒ Force-pushing after review โŒ Introducing new dependencies without justification


Code Review Process

  1. Automated checks run on PR:

    • Build on all platforms
    • Run tests
    • Check code style
    • Security scanning
  2. Maintainer review:

    • Code quality and style
    • Correctness and completeness
    • Security implications
    • Documentation
  3. Feedback:

    • Address review comments
    • Push changes to PR branch
    • Request re-review
  4. Merge:

    • Approved PRs are merged
    • You’re added to contributors list! ๐ŸŽ‰

Testing

Run Tests

1
2
3
4
5
6
7
cd tests
make test

# Or individually:
./test_SecureString
./test_PasswordGenerator
./test_RateLimiting

Write Tests

Tests use Google Test framework:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
TEST(TestSuiteName, TestName) {
    // Arrange
    SecureString str("password");

    // Act
    size_t length = str.length();

    // Assert
    EXPECT_EQ(length, 8);
}

Security Contributions

Reporting Security Issues

DO NOT open public issues for security vulnerabilities.

Instead, email: dev@coralesoft.nz

Include:

  • Description of vulnerability
  • Steps to reproduce
  • Potential impact
  • Suggested fix (if any)

See Security Policy for details.

Security-Focused Contributions

We especially welcome:

  • Security audits
  • Cryptographic reviews
  • Memory safety improvements
  • Attack mitigation enhancements
  • Security documentation

First-Time Contributors

New to open source? Welcome! ๐ŸŽ‰

Good First Issues

Look for issues labeled good first issue:

  • Well-defined scope
  • Clear requirements
  • Good for learning
  • Mentorship available

Getting Help

Don’t be shy - we were all beginners once!


Maintainers

Current maintainers:

Want to become a maintainer? Consistent, quality contributions are the path!


Code of Conduct

We follow the Contributor Covenant Code of Conduct.

In summary:

  • Be respectful and welcoming
  • Be patient and friendly
  • Be collaborative
  • Disagree respectfully
  • No harassment or discrimination

Licence

By contributing to CoraleVault, you agree that your contributions will be licensed under the GNU GPL v3.0 licence.

See LICENSE for details.


Recognition

Contributors are recognized in:

  • CHANGELOG.md - Mentioned in release notes
  • GitHub Contributors - Automatic recognition
  • Documentation - Major contributions noted

Resources


Questions?


Thank you for contributing to CoraleVault! ๐Ÿ™

Every contribution, no matter how small, helps make CoraleVault better for everyone.