Thank you for your interest in contributing to SEPA Payment Bundle! This document provides guidelines for contributing to the project.
This project adheres to a code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to hectorfranco@nowo.tech.
If you find a bug, please:
- Check that the bug hasn't already been reported in the issues
- Create a new issue with:
- A descriptive title
- Steps to reproduce the problem
- Expected behavior vs. actual behavior
- PHP, Symfony, and bundle versions
- Code examples if relevant
Enhancement suggestions are welcome:
- Check that the enhancement hasn't already been suggested in the issues
- Create a new issue with:
- A descriptive title
- Detailed description of the proposed enhancement
- Use cases and benefits
- Possible implementations (if you have them)
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/your-username/sepa-payment-bundle.git cd sepa-payment-bundle - Install dependencies:
# With Docker (recommended) make install # Without Docker composer install
The project follows these standards:
- PSR-12: PHP code style
- PHP 8.1+: Modern PHP features
- Strict type hints:
declare(strict_types=1);in all files - PHP-CS-Fixer: Used to maintain code consistency
Before committing:
# Install git hooks (strips accidental Cursor co-author trailers from messages)
make setup-hooks
# Verify git history has no Cursor co-author trailers (also runs in release-check)
make check-no-cursor-coauthor# Check code style
make cs-check
# or
composer cs-check
# Automatically fix code style
make cs-fix
# or
composer cs-fixThe project requires 100% code coverage. All tests must pass before merging.
# Run all tests
make test
# or
composer test
# Run tests with coverage
make test-coverage
# or
composer test-coverage
# View coverage report
open coverage/index.htmlTest structure:
- Tests must be in the
tests/directory - Each class must have its corresponding test
- Tests must be descriptive and cover edge cases
- Use PHPUnit assertions appropriately
All classes, methods, and properties must have complete PHPDoc comments:
/**
* Class description.
*
* @author Your Name <your.email@example.com>
*/
class MyClass
{
/**
* Property description.
*
* @var string
*/
private string $property;
/**
* Method description.
*
* @param string $param Parameter description
* @return bool Return description
* @throws \InvalidArgumentException When parameter is invalid
*/
public function method(string $param): bool
{
// Implementation
}
}PHPDoc rules:
- All documentation must be in English
- Use
@paramfor all parameters - Use
@returnfor return values - Use
@throwswhen exceptions are thrown - Use
@varfor all properties
- Create a branch from
developfollowing naming conventions (see BRANCHING.md) - Make your changes following code standards
- Write tests for new features or bug fixes
- Ensure all tests pass and coverage is 100%
- Update documentation if needed
- Create a Pull Request to
develop - Wait for review and address feedback
- Merge after approval
- Start from
develop: Always create feature branches fromdevelop - Write tests first: Follow TDD when possible
- Run QA checks: Ensure
make qapasses before committing - Commit often: Make small, logical commits
- Write good commit messages: Follow Conventional Commits (see BRANCHING.md)
- Update CHANGELOG: Add entries for user-facing changes
If you have questions about contributing, please:
- Open an issue with the
questionlabel - Contact the maintainer: hectorfranco@nowo.tech
Thank you for contributing! 🎉
If CI fails because trailers are already on the remote, see GITHUB_CI.md (REQ-GIT-001) and run make strip-cursor-coauthor-from-history before git push --force-with-lease.