# Commit Message Template

This template is designed to help you create a well-structured and informative commit message following the Conventional Commits standard. Please fill in the placeholders below with relevant information about your changes.

## Commit Type

Choose one of the following commit types that best describes the nature of your changes:

*   **feat**: A new feature
*   **fix**: A bug fix
*   **docs**: Documentation only changes
*   **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
*   **refactor**: A code change that neither adds a feature nor fixes a bug
*   **perf**: A code change that improves performance
*   **test**: Adding missing tests or correcting existing tests
*   **build**: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
*   **ci**: Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)
*   **chore**: Other changes that don't modify src or test files
*   **revert**: Reverts a previous commit

**Placeholder:** `type(scope): description`

**Example:** `feat(auth): Implement user authentication`

## Scope (Optional)

The scope could be anything specifying the place of the commit change. For example `auth`, `user`, `profile`, etc.

*   If the change affects more than one scope, you can omit the scope entirely.
*   If the change is a global change, you can use `*` as the scope.

**Placeholder:** `(scope)`

**Example:** `(api)`

## Description

Write a concise and clear description of the changes made. Use the imperative, present tense: "change" not "changed" nor "changes".

**Placeholder:** `description`

**Example:** `Add support for JWT authentication`

## Body (Optional)

Provide a more detailed explanation of the changes made. This section is optional but highly recommended for complex changes. Use the imperative, present tense: "change" not "changed" nor "changes".

*   Explain the motivation for the change.
*   Describe the approach taken.
*   Include any relevant context or background information.

**Placeholder:**

```
Longer explanation of the commit, if necessary.

- Explain the problem and why this commit solves it.
- Provide context about the changes.
- Add any relevant details.
```

**Example:**

```
This commit introduces JWT authentication to improve the security of the API.

The previous authentication mechanism was based on simple API keys, which were vulnerable to brute-force attacks. JWTs provide a more secure and scalable solution.

The following steps were taken:

- Added the `jsonwebtoken` library as a dependency.
- Implemented a new `authenticate` middleware function.
- Updated the API endpoints to use the new middleware.
```

## Footer(s) (Optional)

Footers can be used to add metadata to the commit message, such as:

*   **BREAKING CHANGE**: If the commit introduces a breaking change, add a `BREAKING CHANGE:` footer with a description of the change.
*   **Closes**:  Referencing issue tracker ids.

**Placeholder:**

```
BREAKING CHANGE: Description of the breaking change.

Closes #123
Refs #456
```

**Example:**

```
BREAKING CHANGE: The API endpoint `/users` has been renamed to `/profiles`.

Closes #123
```

## Complete Example

```
feat(auth): Implement user authentication

This commit introduces JWT authentication to improve the security of the API.

The previous authentication mechanism was based on simple API keys, which were vulnerable to brute-force attacks. JWTs provide a more secure and scalable solution.

The following steps were taken:

- Added the `jsonwebtoken` library as a dependency.
- Implemented a new `authenticate` middleware function.
- Updated the API endpoints to use the new middleware.
```