# Contributing to Memola

Be a part of Memola! Pull requests, bug reports, suggestions and any other contributions are welcomed and highly encouraged.

## Table of Contents
- [Getting Start](#getting-started)
- [Contributing](#contributing)
- [Branching](#branching)
- [Pull Request](#pull-request)
- [Feature Request](#feature-request)
- [Bug Report](#bug-report)
- [Community](#community)
- [Code of Conduct](#code-of-conduct)


## Getting Started
Tap the "Fork" button on the top of the site. After forking, clone the forked repository to your Mac.
```bash
git clone https://github.com/dscyrescotti/Memola.git
cd Memola
```
Make sure you have already installed the latest Xcode and open the project.
```bash
xed Memola.xcodeproj
```
Now you are good to run the project and explore the codebase.
> [!IMPORTANT]
> You need to change the bundle identifier and run the project on a real device that supports for Metal.
> You can check Metal compatibility [here](https://support.apple.com/en-us/102894).

## Contributing
We’re excited to have you contribute and be part of our project’s growth! Whether you’re fixing bugs, implementing new features, or suggesting improvements, your input is invaluable.
- Explore our [project board](https://github.com/users/dscyrescotti/projects/12) to find "Todo" items, feature requests, and enhancements. Choose an item that interests you and aligns with your skills. You can always ask questions if you need clarification.
- Our list of open bug issues is a great way to contribute and improve the app’s stability. Browse the "Issues" tab to find bugs labeled as “bug” or “help wanted”.
- Feel free to bring your own commits for enhancements—whether it’s a new feature, optimization, or improvement, your input matters!

## Branching
When contributing to Memola, please follow these branching guidelines to ensure smooth collaboration:
- Always create your branches starting from the `develop` branch.
- 	Use a clear and descriptive name that reflects the purpose of the branch, such as:
    
    - `feature/your-feature-name` for new features.
    - `bug/issue-description` for bug fixes.

## Pull Request
Once you are happy with your changes, submit a "Pull Request" targeting the `develop` branch for review.

The pull request opens with a template loaded. Fill out all fields that are relevant.

The "Pull Request" should include following information:
* A descriptive **title** on what changed.
* A detailed **description** of changes.
* If you made changes to the UI please add a **screenshot** or **video** as well.
* If there is a related issue please add a **reference to the issue**. If not, create one beforehand and link it.
* If your PR is still in progress mark it as **Draft**.

## Feature Request
Feature requests are welcome! If you have an idea for a new feature that could enhance the app’s functionality or improve the user experience, please don’t hesitate to share it. However, please follow these steps when requesting a new feature:
- Do not open a duplicate feature request. Search for existing feature requests first. If you find your feature (or one very similar) previously requested, comment on that issue.
- Fully complete the provided issue template. The feature request template asks for all necessary information for us to begin a productive conversation.
- Be precise about the proposed outcome of the feature and how it relates to existing features. Include implementation details if possible.

## Bug Report
We appreciate your help in improving the project by reporting bugs! Your contributions play a vital role in maintaining the quality and functionality of the app. To ensure we can address issues effectively, please follow these steps when reporting a bug:
- Visit the "Issues" page to see if the bug has already been reported or is currently being worked on.
- If the bug hasn’t been reported, click “New Issue” and provide a clear and concise title that summarizes the problem.
- Provide the detail information according to "Bug Report" template.
- If you have ideas or a potential fix, feel free to share your thoughts or even submit a pull request referencing the issue.

## Code of Conduct
Please review our [Code of Conduct](\CODE_OF_CONDUCT.md) to understand the guidelines for contributing respectfully and collaboratively. We value a community where everyone is treated with dignity, inclusivity, and respect, regardless of background or experience. Let’s work together to foster a positive and supportive environment for all contributors.
