Thank you for your interest in contributing to FormCraft! This document provides guidelines and instructions for contributing.
🌐 Try the live demo to explore the library's capabilities before contributing.
By participating in this project, you are expected to uphold our Code of Conduct:
- Be respectful and inclusive
- Welcome newcomers and help them get started
- Focus on constructive criticism
- Respect differing viewpoints and experiences
- Check if the issue already exists
- Include a clear title and description
- Provide steps to reproduce the issue
- Include code samples if applicable
- Mention your environment (OS, .NET version, etc.)
- Open an issue with the "enhancement" label
- Clearly describe the feature and its benefits
- Provide use cases and examples
- Be open to discussion and feedback
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add or update tests as needed
- Ensure all tests pass (
dotnet test) - Update documentation if needed
- Commit your changes (
git commit -m 'Add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request
- .NET 9.0 SDK or later
- Visual Studio 2022, VS Code, or JetBrains Rider
- Git
# Clone the repository
git clone https://github.com/phmatray/DynamicFormBlazor.git
cd DynamicFormBlazor
# Restore dependencies
dotnet restore
# Build the solution
dotnet build
# Run tests
dotnet test# Windows
./pack-local.ps1
# macOS/Linux
./pack-local.sh- Follow C# coding conventions
- Use meaningful variable and method names
- Add XML documentation to public APIs
- Keep methods small and focused
- Write unit tests for new functionality
- Maintain existing code style
- Write unit tests for all new code
- Ensure existing tests continue to pass
- Aim for high code coverage
- Test edge cases and error conditions
- Use the existing test patterns
This project uses MinVer for semantic versioning:
- Tag releases with
vprefix (e.g.,v1.0.0) - Pre-release versions are automatically generated
- Follow Semantic Versioning
We use Conventional Commits for commit messages:
feat:for new featuresfix:for bug fixesdocs:for documentation changesstyle:for formatting changesrefactor:for code refactoringtest:for test additions/changeschore:for maintenance tasks
Examples:
feat: add field groups layout support
fix: resolve null reference in field renderer
docs: update API documentation
The changelog is automatically generated from commit messages before each commit.
# macOS/Linux
./setup-hooks.sh
# Windows
./setup-hooks.ps1This installs a pre-commit hook that:
- Generates the changelog based on existing commits
- Excludes the current commit to avoid the "one commit ahead" problem
- Automatically stages the updated CHANGELOG.md
- Works with ANY Git interface (Rider, VS, VS Code, CLI, etc.)
When you commit (from any interface):
- The pre-commit hook runs automatically
- Changelog is generated from existing commits
- Updated CHANGELOG.md is staged with your commit
- Your commit proceeds normally
If you need to generate the changelog manually:
# macOS/Linux
./generate-changelog.sh
# Windows
./generate-changelog.ps1To temporarily skip changelog generation:
git commit --no-verifyTo permanently disable:
rm .git/hooks/pre-commitThe changelog follows the Keep a Changelog format.
- Update XML documentation for public APIs
- Update README.md if adding features
- Add examples for new functionality
- Keep documentation clear and concise
Releases are automated through GitHub Actions:
- Maintainers create a new tag (e.g.,
v1.1.0) - CI/CD pipeline runs tests
- Package is automatically published to NuGet.org
Feel free to:
- Open an issue for questions
- Start a discussion in GitHub Discussions
- Contact the maintainers
Thank you for contributing to FormCraft!