quickcodes 0.1.0

Universal Barcode & QR Toolkit - Generate and read 1D and 2D codes with high performance
Documentation
# Contributing to QuickCodes

Thank you for your interest in contributing to QuickCodes! This document provides guidelines and information for contributors.

## πŸš€ Quick Start

1. **Fork the repository** on GitHub
2. **Clone your fork** locally
3. **Create a feature branch** from `main`
4. **Make your changes** following our guidelines
5. **Test thoroughly** and ensure all tests pass
6. **Submit a pull request** with a clear description

## πŸ› οΈ Development Setup

### Prerequisites
- Rust 1.70+ (latest stable recommended)
- Git
- (Optional) Python 3.8+ for Python bindings

### Setup
```bash
# 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
```

## πŸ“ Contribution Guidelines

### Code Style
- 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

### Testing
- **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

### Commit Messages
Follow [Conventional Commits](https://www.conventionalcommits.org/):
```
feat: add DataMatrix barcode support
fix: correct EAN-13 checksum calculation
docs: update Python usage examples
test: add concurrent generation tests
```

### Pull Request Process
1. **Update documentation** if needed
2. **Add tests** for new functionality
3. **Update CHANGELOG.md** with your changes
4. **Ensure CI passes** on all platforms
5. **Request review** from maintainers

## 🎯 Areas for Contribution

### Phase 2 Features (Help Wanted!)
- **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

### Always Welcome
- **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

## πŸ› Reporting Issues

### Bug Reports
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

### Feature Requests
Please include:
- **Clear use case** and motivation
- **Proposed API** or interface
- **Alternatives considered**
- **Implementation ideas** (if any)

## πŸ“š Development Resources

### Project Structure
```
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
```

### Key Concepts
- **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

## πŸ† Recognition

Contributors will be:
- **Listed in AUTHORS.md** 
- **Mentioned in release notes**
- **Given credit** in documentation
- **Invited to collaborate** on future features

## πŸ“ž Getting Help

- **GitHub Discussions**: For questions and ideas
- **GitHub Issues**: For bugs and feature requests
- **Email**: marcio@fazmercado.com for private matters

## πŸ“œ Code of Conduct

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**

## πŸŽ‰ Thank You!

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*