Thank you for your interest in contributing to QuickCodes! This document provides guidelines and information for contributors.
- Fork the repository on GitHub
- Clone your fork locally
- Create a feature branch from
main - Make your changes following our guidelines
- Test thoroughly and ensure all tests pass
- Submit a pull request with a clear description
- Rust 1.70+ (latest stable recommended)
- Git
- (Optional) Python 3.8+ for Python bindings
# Clone the repository
git clone https://github.com/marcioreck/quickcodes.git
cd quickcodes
# Run tests to ensure everything works
cargo test --all
# Check code formatting
cargo fmt --check
# Run linting
cargo clippy --all-targets --all-features -- -D warnings
# Run examples
cargo run --example basic_usage- Follow standard Rust formatting (
cargo fmt) - Pass all Clippy lints (
cargo clippy) - Write clear, self-documenting code
- Add documentation for public APIs
- Include examples in documentation when helpful
- All new code must include tests
- Maintain 100% test coverage for public APIs
- Add integration tests for new features
- Include edge cases and error conditions
- Performance tests for critical paths
Follow Conventional Commits:
feat: add DataMatrix barcode support
fix: correct EAN-13 checksum calculation
docs: update Python usage examples
test: add concurrent generation tests
- Update documentation if needed
- Add tests for new functionality
- Update CHANGELOG.md with your changes
- Ensure CI passes on all platforms
- Request review from maintainers
- Barcode Reading/Decoding: Implement readers for existing formats
- New Formats: DataMatrix, PDF417, Aztec codes
- JavaScript Bindings: WebAssembly support
- CLI Tool: Command-line interface
- Performance: SIMD optimizations
- Mobile: React Native/Flutter bindings
- Bug fixes and error handling improvements
- Documentation improvements and examples
- Test coverage expansion
- Performance optimizations
- Platform support (new OS/architectures)
- Examples for specific use cases
Please include:
- Clear description of the issue
- Steps to reproduce the problem
- Expected vs actual behavior
- Environment details (OS, Rust version)
- Code sample if applicable
Please include:
- Clear use case and motivation
- Proposed API or interface
- Alternatives considered
- Implementation ideas (if any)
src/
├── lib.rs # Main library interface
├── types/ # Core types and enums
├── generators/ # Barcode generators
├── exporters/ # Output format handlers
├── readers/ # Barcode readers (Phase 2)
└── python.rs # Python bindings
tests/ # Integration tests
examples/ # Usage examples
python/ # Python package
.github/ # CI/CD workflows
- Modular Architecture: Each barcode type is a separate module
- Unified API: Consistent interface across all formats
- Error Handling: Comprehensive error types with context
- Performance: Zero-copy where possible, efficient algorithms
- Cross-Platform: Pure Rust with minimal dependencies
Contributors will be:
- Listed in AUTHORS.md
- Mentioned in release notes
- Given credit in documentation
- Invited to collaborate on future features
- GitHub Discussions: For questions and ideas
- GitHub Issues: For bugs and feature requests
- Email: marcio@fazmercado.com for private matters
This project adheres to a Code of Conduct that we expect all participants to follow:
- Be respectful and inclusive
- Assume good intentions from others
- Provide constructive feedback
- Focus on the code, not the person
- Help create a welcoming environment
Every contribution, no matter how small, helps make QuickCodes better for everyone. We appreciate your time and effort!
Happy Coding! 🚀
QuickCodes - Desenvolvido por Márcio Reck