# Contribution Guidelines

Thank you for considering contributing to Giga! We value your input and aim to make the contribution process as accessible and transparent as possible. Whether you're interested in reporting bugs, discussing code, submitting fixes, proposing features, becoming a maintainer, or engaging with the Giga community, we welcome your involvement.

## How to Contribute to our Giga Project?

1. **Familiarize Yourself:** Before contributing, familiarize yourself with the project by reviewing the README, code of conduct, and existing issues or pull requests.
2. **Issues and Feature Requests:** Check the issue tracker for existing issues or create a new one to report bugs, suggest improvements, or propose new features.
3. **Fork and Branch:** Fork the repository and create a branch for your contribution. Branch names should be descriptive (e.g., feature/add-new-functionality, bugfix/issue-description).
4. **Code Changes:** Make changes or additions following our coding conventions and style guide. Ensure to write clear commit messages that explain the purpose of each commit.
5. **Testing:** If applicable, include tests for the changes made to ensure code reliability. Ensure existing tests pass.
6. **Documentation:** Update relevant documentation, including README files or any other necessary guides.
7. **Pull Request:** Open a pull request (PR) against the main branch. Clearly describe the changes introduced, referencing any related issues.

## Report a Bug or Suggestion

- **Bug Reports:** Help us understand and address issues by submitting detailed bug reports via GitHub issues. Include as many relevant details as possible in the provided template to expedite resolutions.
- **Suggestions:** Share your ideas, feedback, or stay updated on Giga by joining our [Discord channel]((https://discord.com/invite/NStBwE7kyv)).

## Making Changes and Pull Requests

To contribute code changes:

1. Fork the repository and create a new branch for your contribution 
>`git checkout -b 'my-contribution'`.
2. Make your changes on the created branch.
3. Commit with clear messages describing the updates.
4. Submit a pull request in the main repository, ensuring the following:
   - Clear use case or demonstration of bug fix/new feature.
   - Inclusion of relevant tests (unit, functional, and fuzz tests where applicable).
   - Adherence to code style guidelines.
   - No breaking changes to the existing test suite.
   - Bug fixes accompanied by tests to prevent regression.
   - Update of relevant comments and documentation reflecting code behavior changes.

## Contributing with an Issue

If you encounter a bug but aren't sure how to fix it or submit a pull request, you can create an issue. Issues serve as avenues for bug reports, feedback, and general discussions within the GigaSpatial GitHub repository.

## Other Ways to Contribute

Beyond code contributions:

- **Feedback and Insights:** Share your expertise and experiences related to cash transfer by contacting us at [giga@unicef.org](mailto:giga@unicef.org).
- **Documentation:** Contribute to our journey by sharing reports, case studies, articles, blogs, or surveys. Contact us to contribute and learn more via [giga@unicef.org](mailto:giga@unicef.org).
- **Designs:** If you're passionate about UI/UX, animations, graphics, tutorials, etc., contact us to create visuals for the Giga community via [giga@unicef.org](mailto:giga@unicef.org).

## Connect with Giga Contributors
Connect with fellow contributors via our Discord channel to engage with the Giga community: [Click](https://discord.com/invite/NStBwE7kyv)