This guide outlines the contribution workflow for the Blueprint project, including Git practices, issue management, pull request processes, and code review guidelines.
Note: For specific details about issue templates and pull request formatting, see the Issue Guidelines document.
Before you start contributing to Blueprint, make sure you have:
- Created a GitHub account
- Cloned the repository
- Set up the development environment as described in the Installation Guide
Blueprint follows a branch-based workflow for contributions:
-
Clone the repository locally:
git clone https://github.com/blueprint-site/blueprint-site.github.io.git cd blueprint-site.github.io
-
Verify your remote:
git remote -v
When creating branches, follow these naming conventions that align with our issue types:
feature/short-description
- For new featuresfix/issue-description
- For bug fixeshotfix/critical-issue
- For critical fixes requiring immediate attentiondocs/what-changed
- For documentation changesdesign/what-changed
- For UI/UX changesrefactor/component-name
- For code refactoringinfra/what-changed
- For infrastructure or tooling changestest/what-tested
- For adding tests
Examples:
feature/addon-collections
fix/broken-image-upload
hotfix/security-vulnerability
docs/api-endpoints
design/dark-mode-colors
refactor/search-component
infra/github-actions
Ensure your branch name corresponds to the type of issue you're addressing.
-
Sync your local repository with the remote:
git checkout develop git pull
-
Create a new branch for your work:
git checkout -b prefix/your-feature-name
-
Make your changes:
- Follow the code standards
- Write tests if applicable
- Update documentation as needed
-
Commit your changes using conventional commit messages:
git add . git commit -m "feat: add user collections feature"
-
Push your branch to the repository:
git push origin feature/your-feature-name
Blueprint uses the Conventional Commits specification for commit messages. This helps with automated versioning and changelog generation.
Format: type(scope): message
Types (aligned with our issue types and PR prefixes):
feat
: A new featurefix
: A bug fixhotfix
: A critical fix requiring immediate attentiondocs
: Documentation changesdesign
: UI/UX changesrefactor
: Code changes that neither fix bugs nor add featurestest
: Adding or correcting testsinfra
: Changes to infrastructure, build process, or tools (combines traditionalbuild
andci
)style
: Changes that don't affect code functionality (formatting, etc.)
Examples:
feat(auth): add oauth login with discord
fix(upload): resolve image upload error
hotfix(security): patch authentication vulnerability
docs(api): update endpoint documentation
design(theme): implement dark mode toggle
refactor(search): improve search component performance
infra(ci): add github actions workflow
Note: These commit types should align with your branch naming convention and PR title prefixes for consistency. See the Issue Guidelines for more details on PR title prefixes.
If you're working on multiple changes:
- Create separate branches for each change
- Submit separate pull requests for each change
- Reference related pull requests in your comments
- Go to the repository
- Click "Pull Requests" > "New Pull Request"
- Select your branch as the source and
develop
as the target branch - Click "Create Pull Request"
Include the following in your PR description:
- What does this PR do? - Brief description of the changes
- Related issue - Link to the GitHub issue (if applicable)
- Screenshots - For UI changes
- Testing instructions - How to test the changes
- Additional context - Any other relevant information
We now use a standardized PR template that is automatically applied when you create a pull request. The template includes:
- Description of changes
- Testing information
- Comprehensive checklist
- Related issues section
- Space for screenshots or clips
Make sure to follow the PR title format described in the Issue Guidelines document (e.g., fix: Resolve authentication timeout
).
- Be responsive to review comments
- Address all feedback before requesting a re-review
- Explain your reasoning when you disagree with a suggestion
- Test your changes thoroughly before submitting
- Be respectful and constructive in your feedback
- Focus on important issues rather than minor style preferences
- Explain your reasoning when requesting changes
- Approve when ready rather than leaving PRs in limbo
If your PR has conflicts:
-
Sync your local develop branch:
git checkout develop git pull
-
Rebase your feature branch:
git checkout feature/your-feature-name git rebase develop
-
Resolve conflicts in each file
-
Continue the rebase:
git add . git rebase --continue
-
Force push your updated branch:
git push --force origin feature/your-feature-name
- Make the requested changes in your local branch
- Commit the changes (consider using
fixup
commits) - Push to your feature branch
- Respond to the comment in the PR
For addressing review feedback, consider using fixup commits:
git add .
git commit --fixup HEAD
git push origin feature/your-feature-name
Before final merge, squash the fixups:
git rebase -i --autosquash develop
git push --force origin feature/your-feature-name
Blueprint uses GitHub Actions for continuous integration:
- Linting: ESLint checks code quality
- Type Checking: TypeScript validation
- Build Check: Ensures the project builds successfully
- Test Runners: Runs automated tests
All CI checks must pass before a PR can be merged.
After your PR is merged:
-
Delete your feature branch:
git checkout develop git branch -d feature/your-feature-name git push origin --delete feature/your-feature-name
-
Update your local develop branch:
git pull
-
Celebrate your contribution! 🎉
- Navigate to the Issues page
- Click "New Issue"
- Select the appropriate issue template based on the type of issue
- Fill out all required fields in the template
- Submit the issue
Our project uses labels to prioritize and categorize issues:
- Priority labels indicate urgency (
priority: critical
,priority: high
, etc.) - Type labels indicate the kind of issue (
bug
,feature
, etc.) - Special attention labels provide additional context (
good first issue
,help wanted
, etc.)
See the Issue Guidelines for a complete list of labels.
We use GitHub Projects to track issue progress:
- Issues start in the "Backlog" or "To Do" columns
- Move issues to "In Progress" when you start working on them
- Move issues to "Review" when ready for review
- Issues are moved to "Done" when completed and deployed
-
CI Failures:
- Check the CI logs for specific errors
- Run linting and tests locally before pushing
-
Merge Conflicts:
- Follow the conflict resolution steps above
- If complex, consult with maintainers
-
Stale PRs:
- If your PR becomes outdated, rebase on the latest develop branch
-
Rejected PRs:
- Read the feedback carefully
- Address all concerns before resubmitting
-
Issue Template Problems:
- If the issue template isn't loading correctly, try a different browser
- Ensure you've selected the correct issue type
For critical bug fixes:
- Create a branch from develop:
git checkout -b hotfix/critical-issue
- Fix the issue with minimal changes
- Submit a PR with the prefix
hotfix:
in the title (e.g.,hotfix: Fix critical security vulnerability
) - Add the
priority: critical
label - Request expedited review
For documentation changes:
- Create a branch:
git checkout -b docs/update-readme
- Make documentation changes
- Submit a PR with the prefix
docs:
in the title (e.g.,docs: Update API documentation
) - The PR will follow an abbreviated review process
Blueprint follows semantic versioning:
- Major: Breaking changes
- Minor: New features, non-breaking
- Patch: Bug fixes, non-breaking
The release process is handled by maintainers, who will:
- Merge PRs into develop
- Merge develop into main when ready for release
- Create a new version tag
- Generate release notes
- Deploy to production
- Issue Guidelines - Detailed documentation on our issue templates and PR formatting
- GitHub Flow
- Conventional Commits
- Git Documentation
- TypeScript Documentation
- React Documentation
If you have questions about contributing:
- Check the documentation
- Search for existing issues
- Join our Discord server
- Ask in the repository discussions