# Contributing to MIVO

First off, thank you for considering contributing to MIVO. It is people like you that make MIVO such a great tool.

## Code of Conduct

By participating in this project, you are expected to uphold our Code of Conduct. Please report unacceptable behavior to us.

## How Can I Contribute?

### Reporting Bugs

This section guides you through submitting a bug report for MIVO. Following these guidelines helps maintainers and the community understand your report, reproduce the behavior, and find related reports.

- **Use a clear and descriptive title** for the issue to identify the problem.
- **Describe the exact steps to reproduce the problem** in as many details as possible.
- **Provide specific examples** to demonstrate the steps.
- **Describe the behavior you observed** after following the steps and point out what exactly is the problem with that behavior.
- **Explain which behavior you expected to see instead** and why.
- **Include screenshots** if the issue is related to the User Interface.

### Suggesting Enhancements

This section guides you through submitting an enhancement suggestion for MIVO, including completely new features and minor improvements to existing functionality.

- **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.
- **Provide specific examples** to demonstrate the steps.
- **Describe the current behavior** and explain which behavior you expected to see instead and why.

### Pull Requests

The process described here has several goals:

- Maintain MIVO's quality.
- Fix problems that are important to users.
- Engage the community in working toward the best possible MIVO.
- Enable a sustainable system for MIVO's maintainers to review contributions.

Please follow these steps to have your contribution considered by the maintainers:

1.  Follow all instructions in the template.
2.  Follow the style guides.
3.  After you submit your pull request, check that all status checks are passing.

## Development Setup

### Prerequisites

- PHP 8.1 or higher
- Composer
- Node.js and npm (for frontend assets and documentation)

### Installation

1.  Clone the repository.
2.  Run `composer install` to install PHP dependencies.
3.  Run `npm install` to install frontend dependencies.
4.  Copy `.env.example` to `.env` and configure your environment variables.

## Styleguides

### Git 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.

### PHP Styleguide

- We follow PSR-12 coding standard.
- Use strict typing where possible.

### Documentation Styleguide

- Use Markdown.
- Limit line length to 80 characters.
- Use clear and concise language.
- **Do not use emojis.**

## License

By contributing, you agree that your contributions will be licensed under its MIT License.
