We love contributions from the community! Custom Fields is now open source, and we welcome pull requests, bug reports, and feature suggestions.
# Clone your fork
git clone https://github.com/YOUR_USERNAME/custom-fields.git
cd custom-fields
# Install dependencies
composer install
npm install
# Set up testing environment
cp phpunit.xml.dist phpunit.xml
# Run tests to verify setup
composer test
git checkout -b feature/your-feature-name
Use descriptive branch names like feature/add-phone-field or fix/validation-error
# Run all tests
composer test
# Run specific tests
composer test:pest
composer test:types
We use Pest PHP for testing. Please ensure:
# Run full test suite
composer test
# Run with coverage
composer test-coverage
# Run only architecture tests
composer test:arch
Follow conventional commit format:
type(scope): brief description
Longer explanation if needed
Closes #123
Types: feat, fix, docs, style, refactor, test, chore
Found a bug? Please open an issue with:
Have an idea? We'd love to hear it! Open an issue describing:
We actively welcome pull requests for:
Want to add a new field type? Great! Make sure to:
FieldTypeDefinitionInterfaceExample structure:
namespace Relaticle\CustomFields\FieldTypes;
class PhoneFieldType implements FieldTypeDefinitionInterface
{
public function getFormComponent(CustomField $field): Field
{
// Implementation
}
public function getTableColumn(CustomField $field): Column
{
// Implementation
}
// ... other required methods
}
# Watch frontend assets
npm run dev
# Format code
composer lint
# Run static analysis
composer test:types
By contributing, you agree that your contributions will be licensed under the same dual license as Custom Fields (AGPL-3.0 + Commercial).
Contributors are recognized in:
Thank you for helping make Custom Fields better for everyone!