6.5 KiB
6.5 KiB
Contributing to HelmView
Thank you for your interest in contributing to HelmView! This document provides guidelines and instructions for contributing.
🎯 Ways to Contribute
- 🐛 Report bugs
- 💡 Suggest new features
- 📝 Improve documentation
- 🔧 Submit bug fixes
- ✨ Add new features
- 🎨 Improve UI/UX
- 🧪 Write tests
- 🌍 Translate (future)
🚀 Getting Started
Prerequisites
- Git
- Docker & Docker Compose
- Node.js 18+ (for local development)
- Python 3.11+ (for local development)
Fork and Clone
# Fork the repository on GitHub
# Then clone your fork
git clone https://github.com/YOUR_USERNAME/helmview.git
cd helmview
Development Setup
# Start the application
docker-compose up --build
# Or run locally
# Backend
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
uvicorn main:app --reload
# Frontend (separate terminal)
cd frontend
npm install
npm run dev
📋 Development Workflow
1. Create a Branch
git checkout -b feature/my-new-feature
# or
git checkout -b fix/bug-description
Branch Naming
feature/- New featuresfix/- Bug fixesdocs/- Documentation changesrefactor/- Code refactoringtest/- Test additionschore/- Maintenance tasks
2. Make Changes
Code Style
Backend (Python)
- Follow PEP 8
- Use type hints
- Add docstrings for functions
- Keep functions focused and small
Frontend (JavaScript)
- Use modern ES6+ syntax
- Follow React best practices
- Use functional components with hooks
- Keep components focused and reusable
Commit Messages
Follow the conventional commits format:
<type>(<scope>): <subject>
<body>
<footer>
Types:
feat: New featurefix: Bug fixdocs: Documentationstyle: Formattingrefactor: Code restructuringtest: Testschore: Maintenance
Examples:
git commit -m "feat(editor): add YAML formatting button"
git commit -m "fix(upload): handle large file validation"
git commit -m "docs(readme): update installation steps"
3. Test Your Changes
Backend Tests
cd backend
pytest
# or with coverage
pytest --cov=. --cov-report=html
Frontend Tests
cd frontend
npm run test
# or with coverage
npm run test:coverage
Manual Testing
- Test all affected features
- Test error cases
- Test on different browsers (frontend)
- Verify Docker build works
4. Submit Pull Request
Before Submitting
- Code follows style guidelines
- Tests pass
- Documentation updated
- Commit messages are clear
- No merge conflicts
- Docker build succeeds
PR Description Template
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Testing
How to test these changes
## Screenshots (if applicable)
Add screenshots for UI changes
## Checklist
- [ ] Tests pass
- [ ] Documentation updated
- [ ] No breaking changes (or documented)
🐛 Reporting Bugs
Before Reporting
- Check existing issues
- Verify it's reproducible
- Test on latest version
Bug Report Template
**Describe the bug**
Clear description of the bug
**To Reproduce**
Steps to reproduce:
1. Go to '...'
2. Click on '...'
3. See error
**Expected behavior**
What should happen
**Actual behavior**
What actually happens
**Screenshots**
If applicable
**Environment**
- OS: [e.g., Windows 10]
- Browser: [e.g., Chrome 120]
- Version: [e.g., 1.0.0]
**Additional context**
Any other relevant information
💡 Feature Requests
Feature Request Template
**Is your feature request related to a problem?**
Description of the problem
**Describe the solution you'd like**
Clear description of desired feature
**Describe alternatives you've considered**
Alternative solutions or features
**Additional context**
Mockups, examples, etc.
📝 Documentation
Documentation Guidelines
- Use clear, concise language
- Include code examples
- Add screenshots for UI features
- Keep README.md up to date
- Update API documentation
- Add inline code comments
Documentation Locations
README.md- Main documentationQUICKSTART.md- Quick start guideSECURITY.md- Security policydocs/- Detailed documentation (future)- Code comments - Inline documentation
🎨 UI/UX Guidelines
Design Principles
- Simplicity: Keep interfaces clean
- Consistency: Follow existing patterns
- Accessibility: WCAG 2.1 AA compliance
- Responsiveness: Mobile-friendly
- Performance: Fast loading times
Color Palette
- Primary:
#667eea(purple) - Success:
#48bb78(green) - Warning:
#ed8936(orange) - Error:
#f56565(red) - Neutral: Shades of gray
🧪 Testing Guidelines
Test Coverage Goals
- Backend: >80%
- Frontend: >70%
- Critical paths: 100%
Test Types
- Unit Tests: Individual functions
- Integration Tests: API endpoints
- E2E Tests: Full workflows (future)
- Security Tests: Vulnerability scanning
🔒 Security
- Report security issues privately
- See SECURITY.md for details
- Never commit secrets or credentials
- Use environment variables
📦 Release Process
Versioning
We follow Semantic Versioning:
- MAJOR: Breaking changes
- MINOR: New features
- PATCH: Bug fixes
Release Checklist
- Update version numbers
- Update CHANGELOG.md
- Run full test suite
- Update documentation
- Create release tag
- Build and test Docker images
- Publish release notes
🤝 Code Review
Review Process
- Submit PR
- Automated checks run
- Maintainer reviews code
- Address feedback
- Approval and merge
Review Criteria
- Code quality
- Test coverage
- Documentation
- Security considerations
- Performance impact
💬 Communication
Channels
- GitHub Issues: Bug reports, features
- GitHub Discussions: Questions, ideas
- Pull Requests: Code review
- Email: Security issues only
Response Times
- Critical bugs: 24-48 hours
- Other issues: 3-7 days
- Pull requests: 7-14 days
📜 License
By contributing, you agree that your contributions will be licensed under the MIT License.
🙏 Recognition
Contributors will be:
- Listed in CONTRIBUTORS.md
- Mentioned in release notes
- Credited in documentation
❓ Questions?
- Check existing documentation
- Search closed issues
- Open a GitHub Discussion
- Contact maintainers
Thank you for contributing to HelmView! 🎉