# Contributing to Seekify

First off, thanks for taking the time to contribute! ❤️

All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions.

## Table of Contents

- [I Have a Question](#i-have-a-question)
- [I Want To Contribute](#i-want-to-contribute)
  - [Reporting Bugs](#reporting-bugs)
  - [Suggesting Enhancements](#suggesting-enhancements)
  - [Your First Code Contribution](#your-first-code-contribution)
- [Styleguides](#styleguides)
  - [Commit Messages](#commit-messages)

## I Have a Question

If you want to ask a question, we assume that you have read the available [Documentation](https://github.com/Parveshiiii/seekify).

Before you ask a question, it is best to search for existing [Issues](https://github.com/Parveshiiii/seekify/issues) that might help you. In case you have found a suitable issue and still need clarification, you can write your question in this issue. It is also advisable to search the internet for answers first.

If you then still feel the need to ask a question and need clarification, we recommend the following:

- Open an [Issue](https://github.com/Parveshiiii/seekify/issues/new).
- Provide as much context as you can about what you're running into.
- Provide project and platform versions (python version, OS, etc), depending on what seems relevant.

## I Want To Contribute

### Reporting Bugs

- **Use the provided template.**
- **Ensure the bug was not already reported** by searching on GitHub under [Issues](https://github.com/Parveshiiii/seekify/issues).
- If you're unable to find an open issue addressing the problem, open a new one. Be sure to include a **title and clear description**, as much relevant information as possible, and a **code sample** or an **executable test case** demonstrating the expected behavior that is not occurring.

### Suggesting Enhancements

- Open a new issue.
- Use a **clear and descriptive title** for the issue to identify the suggestion.
- Provide a **step-by-step description of the suggested enhancement** in as many details as possible.
- Explain why this enhancement would be useful to most users.

### Your First Code Contribution

1. Fork the repository.
2. Clone your fork locally using `git clone`.
3. Create a new branch for your feature or fix.
4. Install dependencies: `pip install -e ".[test]"`
5. Make your changes.
6. Run tests to ensure nothing is broken.
7. Commit your changes using descriptive commit messages.
8. Push your branch to GitHub.
9. Open a Pull Request.

## Styleguides

### Commit Messages

- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters or less
- Reference issues and pull requests liberally after the first line
