# Contributing to keap-client

Thank you for considering contributing to keap-client! We welcome contributions from anyone who wants to help improve the package.

**Before You Start**
-------------------

1. **Read the README.md**: Before contributing, please read the README.md file to understand the package's architecture, models, and functionality.
2. **Check the Issues**: Browse the open issues to see if someone has already reported the issue you want to work on or if there's a similar issue that you can help with.

**Contributing Process**
-----------------------

1. **Find an Issue**: Find an issue that you want to work on and make sure it's not already assigned to someone else.
2. **Assign the Issue to Yourself**: Assign the issue to yourself by commenting on the issue with "I'll take this" or "I'm working on this".
3. **Create a Draft PR**: Create a draft pull request (PR) with a clear title and description of the changes you plan to make. This will help us track your progress and provide feedback.
4. **Periodically Push Changes**: Periodically push your changes to the draft PR to keep us updated on your progress.
5. **Get Feedback**: We'll review your changes and provide feedback. You can also ask for feedback from other contributors or maintainers.
6. **Finalize the PR**: Once your changes are complete and you've addressed any feedback, finalize the PR and we'll review it for merge.

**Commit Rules**
----------------

We follow a specific commit message format to keep our commit history organized and easy to read. Please follow these rules when making commits:

1. **Format**: Use the following format for your commit messages: `#[issue number](type) - [action]: [brief description]`
2. **Issue Number**: Include the issue number in the commit message, if applicable.
3. **Type**: Use one of the following types to indicate the type of change:
	* `feat`: A new feature or functionality.
	* `fix`: A bug fix or correction.
	* `docs`: Changes to documentation.
	* `style`: Changes to code style or formatting.
	* `refactor`: Code refactoring or restructuring.
	* `perf`: Performance improvements.
	* `test`: Changes to tests or testing infrastructure.
	* `chore`: Maintenance or administrative tasks.
4. **Action**: Use a verb to describe the action taken, such as `add`, `remove`, `update`, `fix`, etc.
5. **Brief Description**: Provide a brief description of the changes made.

Example commit message:
```
#32(issue)/Files(feat) - add: Files model. fix: typo on utils math module
```
**Guidelines for Creating Issues**
---------------------------------

1. **Clear Title**: Use a clear and concise title that describes the issue.
2. **Detailed Description**: Provide a detailed description of the issue, including steps to reproduce and expected behavior.
3. **Labels**: Use labels to categorize the issue (e.g. bug, feature, enhancement).
4. **Priority**: Indicate the priority of the issue (e.g. high, medium, low).
5. **Screenshots or Logs**: Attach screenshots or logs to help illustrate the issue.

**Code of Conduct**
------------------

We follow the [Contributor Covenant Code of Conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct). By contributing to keap-client, you agree to abide by this code of conduct.

**License**
----------

keap-client is licensed under the MIT license. By contributing to keap-client, you agree to license your contributions under this license.

**Acknowledgments**
------------------

We would like to thank all contributors to keap-client for their hard work and dedication. Your contributions are what make this package possible.
