Thank you for your interest in contributing to cURL Filter! This document provides guidelines and information for contributors.
Before creating an issue, please:
- Search existing issues to avoid duplicates
- Use the issue template if available
- Provide clear information:
- Clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Browser and version information
- Sample cURL command (if applicable)
We welcome feature suggestions! Please:
- Check existing feature requests first
- Describe the use case clearly
- Explain the benefits to users
- Consider implementation complexity
- Be willing to help with implementation
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/curl-filter.git cd curl-filter - Install dependencies:
npm install
- Start development server:
npm run dev
- Create a feature branch:
git checkout -b feature/your-feature-name
- Make your changes
- Write/update tests
- Run tests:
npm run test:run
- Run linting:
npm run lint
- Commit your changes:
git commit -m "feat: add your feature description" - Push to your fork:
git push origin feature/your-feature-name
- Create a Pull Request
- Code follows the project's style guidelines
- Tests are included and passing
- Documentation is updated (if needed)
- No breaking changes (or properly documented)
- Commit messages follow conventional format
Please include:
- Summary of changes
- Motivation for the changes
- Testing performed
- Screenshots (for UI changes)
- Breaking changes (if any)
- Automated checks must pass (tests, linting, build)
- Code review by maintainers
- Address feedback if requested
- Merge after approval
- Use strict TypeScript configuration
- Prefer interfaces over types for object shapes
- Use proper generic constraints
- Avoid
anytype (useunknowninstead) - Document complex types with JSDoc
- Use functional components with hooks
- Implement proper error boundaries
- Use
useCallbackanduseMemofor performance - Follow React best practices for state management
- Use proper prop types and default values
- Group related functionality in modules
- Use barrel exports for clean imports
- Implement proper separation of concerns
- Follow single responsibility principle
- Keep functions small and focused
- camelCase for variables and functions
- PascalCase for components and types
- UPPER_SNAKE_CASE for constants
- kebab-case for file names
- Descriptive names over short names
src/
├── components/
│ └── __tests__/ # Component tests
├── utils/
│ └── __tests__/ # Utility function tests
└── test/
└── setup.ts # Test configuration
- Unit Tests: Test individual functions and components
- Integration Tests: Test component interactions
- User Flow Tests: Test complete user scenarios
- All new features must have tests
- Bug fixes should include regression tests
- Maintain or improve test coverage
- Use descriptive test names
- Test edge cases and error conditions
# Run all tests
npm run test:run
# Run tests in watch mode
npm run test
# Run tests with coverage
npm run test:run -- --coverage
# Run specific test file
npm run test:run src/utils/__tests__/curlParser.test.ts- Add translation keys to
src/i18n/locales/ - Update all language files consistently
- Use nested structure for organization
- Test with different languages
- Use clear, concise language
- Consider cultural differences
- Maintain consistent terminology
- Test UI layout with longer translations
- Document complex functions with JSDoc
- Explain non-obvious logic
- Include usage examples
- Keep comments up to date
- Update README for new features
- Add examples for complex functionality
- Include screenshots for UI changes
- Maintain API documentation
We follow Semantic Versioning:
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes (backward compatible)
- All tests passing
- Documentation updated
- CHANGELOG.md updated
- Version bumped in package.json
- Git tag created
- GitHub release created
Please DO NOT create public issues for security vulnerabilities. Instead:
- Email security concerns to the maintainers
- Provide detailed information about the vulnerability
- Allow time for the issue to be addressed
- Coordinate disclosure timing
- Validate all inputs from users
- Sanitize data before processing
- Use secure coding practices
- Keep dependencies updated
- Follow OWASP guidelines
- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: General questions and ideas
- Pull Requests: Code contributions and reviews
We are committed to providing a welcoming and inclusive environment. Please:
- Be respectful and professional
- Welcome newcomers and help them learn
- Focus on constructive feedback
- Respect different viewpoints
- Report inappropriate behavior
- Performance optimization
- Accessibility improvements
- Mobile experience
- Advanced filtering features
- Integration capabilities
- Plugin system for custom filters
- Cloud sync for rules and history
- Team collaboration features
- API integration capabilities
- Advanced analytics
- Documentation: README.md, DEVELOPMENT.md, API.md
- Examples: Check the test files for usage examples
- Issues: Search existing issues for solutions
- GitHub Issues: For bugs and feature requests
- GitHub Discussions: For questions and ideas
- Email: For security issues and private matters
Thank you for contributing to cURL Filter! Your contributions help make this tool better for everyone. 🙏