Thank you for your interest in contributing to the JetThoughts website! We welcome contributions from both team members and the community.
- Code of Conduct
- Getting Started
- Development Workflow
- Contribution Types
- Coding Standards
- Testing Guidelines
- Commit Guidelines
- Pull Request Process
- Content Contributions
- Be respectful and inclusive
- Welcome newcomers and help them get started
- Focus on constructive criticism
- Accept responsibility and apologize for mistakes
- Prioritize what's best for the community
- Harassment, discrimination, or offensive language
- Personal attacks or trolling
- Publishing others' private information
- Any conduct that could be considered inappropriate
Before contributing, ensure you have:
- Development environment set up (see SETUP.md)
- Git configured with your GitHub account
- Understanding of Hugo basics
- Familiarity with the project structure
- Find an issue labeled
good first issueorhelp wanted - Comment on the issue to claim it
- Fork the repository to your GitHub account
- Create a branch for your changes
- Make your changes following our guidelines
- Submit a pull request
# Fork via GitHub UI, then:
git clone https://github.com/YOUR-USERNAME/jetthoughts.github.io.git
cd jetthoughts.github.io
git remote add upstream https://github.com/jetthoughts/jetthoughts.github.io.git# Update master
git checkout master
git pull upstream master
# Create your branch
git checkout -b feature/your-feature-nameFollow our coding standards and test your changes:
# Start development server
hugo server -D
# Run tests before committing
npm run testUse semantic commit messages:
git add .
git commit -m "feat: add new feature description"git push origin feature/your-feature-name
# Then create PR via GitHub UI- Identify the bug - Check if it's already reported
- Create/claim an issue - Describe the bug clearly
- Write a test that reproduces the bug
- Fix the bug - Make minimal necessary changes
- Verify the fix - Ensure tests pass
- Discuss first - Open an issue for discussion
- Design the feature - Consider UX and architecture
- Implement incrementally - Break into small PRs
- Document the feature - Update relevant docs
- Add tests - Cover new functionality
- Identify gaps - What's missing or unclear?
- Write clearly - Use simple, direct language
- Include examples - Show, don't just tell
- Keep it current - Update when code changes
For blog content, we use dev.to as the source:
- Join JetThoughts on dev.to
- Write your article following our style guide
- Tag appropriately - First 2 tags affect URL
- Request review before publishing
- Publish under JetThoughts organization
For pages, services, or case studies:
# Use Hugo archetypes
hugo new services/service-name/index.md
hugo new clients/client-name/index.md- Use semantic HTML5 elements
- Follow BEM methodology for CSS classes
- Ensure accessibility (WCAG 2.1 AA)
- Optimize images before adding
- Use Hugo shortcodes for repeated patterns
/* Component-based organization */
.component-name { }
.component-name__element { }
.component-name--modifier { }
/* Use CSS custom properties */
:root {
--color-primary: #333;
}// Use ES6+ features
const functionName = (param) => {
// Clear, concise logic
return result;
};
// Avoid global scope pollution
(function() {
// Module code
})();Follow the Ruby Style Guide and use Standard gem:
# Auto-format code
bundle exec standardrb --fixAll changes must include appropriate tests:
- Test that reproduces the bug
- Test that verifies the fix
- Unit tests for logic
- Integration tests for workflows
- Visual regression tests for UI changes
# Full test suite
npm run test
# Specific tests
ruby test/test_blog_sync.rb
ruby test/test_system.rb
# Visual regression
ruby test/test_homepage.rb# Example test structure
class TestFeatureName < Minitest::Test
def setup
# Test setup
end
def test_specific_behavior
# Arrange
input = prepare_input
# Act
result = perform_action(input)
# Assert
assert_equal expected, result
end
endWe follow Conventional Commits:
<type>(<scope>): <subject>
<body>
<footer>
- feat: New feature
- fix: Bug fix
- docs: Documentation changes
- style: Formatting, missing semicolons, etc.
- refactor: Code restructuring
- test: Adding tests
- chore: Maintenance tasks
feat(blog): add author bio section
fix(nav): correct dropdown menu z-index issue
docs: update README with new setup instructions
style(css): format with prettier
refactor(sync): improve dev.to API error handling
test(homepage): add mobile viewport tests
chore(deps): update Hugo to 0.147.9- Tests pass locally (
npm run test) - Code follows style guidelines
- Documentation is updated
- Commit messages follow convention
- Branch is up to date with master
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Performance improvement
## Testing
- [ ] Unit tests pass
- [ ] Visual regression tests pass
- [ ] Manual testing completed
## Screenshots
(if applicable)
## Related Issues
Closes #123- Automated checks - CI/CD must pass
- Code review - At least one approval required
- Testing verification - Reviewer tests changes
- Merge - Squash and merge to master
- Delete your feature branch
- Update your local master
- Celebrate your contribution! π
- Tone: Professional yet approachable
- Length: 800-2000 words typically
- Structure: Clear introduction, body, conclusion
- Code: Include practical examples
- Images: Use diagrams and screenshots
- Ruby on Rails best practices
- Software architecture patterns
- Team collaboration techniques
- Development workflow improvements
- Case studies and lessons learned
- Use active voice
- Keep sentences concise
- Include code examples
- Provide context and rationale
- Link to related resources
# Main Title
## Section Header
### Subsection
**Bold** for emphasis
`code` for inline code
\```language
// Code blocks with syntax highlighting
\```
- Unordered lists
1. Ordered lists
[Link text](url)
- GitHub Issues - Bug reports and feature requests
- Pull Request Comments - Code review discussions
- Email - info@jetthoughts.com for general questions
Contributors are recognized in:
- Release notes
- Contributors page
- Annual reports
Thank you for contributing to JetThoughts! Your efforts help us maintain a high-quality website that serves our clients and community.
Happy Contributing! π