quickcodes 0.1.0

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

**Universal Barcode & QR Toolkit**

*Gere e leia códigos de barras (1D) e 2D em múltiplos padrões, com performance e simplicidade.*

[![CI](https://github.com/marcioreck/quickcodes/actions/workflows/ci.yml/badge.svg)](https://github.com/marcioreck/quickcodes/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE.md)
[![Crates.io](https://img.shields.io/crates/v/quickcodes.svg)](https://crates.io/crates/quickcodes)
[![Documentation](https://docs.rs/quickcodes/badge.svg)](https://docs.rs/quickcodes)
[![codecov](https://codecov.io/gh/marcioreck/quickcodes/branch/main/graph/badge.svg)](https://codecov.io/gh/marcioreck/quickcodes)
[![Stars](https://img.shields.io/github/stars/marcioreck/quickcodes?style=social)](https://github.com/marcioreck/quickcodes)

---

## ✨ Features

* ✅ Geração e leitura de códigos **1D**: EAN-13, UPC-A, Code128, Code39, ITF-14, Codabar
* ✅ Geração e leitura de códigos **2D**: QR Code, DataMatrix, PDF417, Aztec
* ✅ Saída em **PNG, SVG, PDF, Canvas**
***Bindings** para Python, JavaScript (Node.js + WASM), e futuro suporte a Go e .NET
***Leitura em tempo real** de câmera (via WebAssembly no browser)
* ✅ API simples e moderna

---

## 🚀 Exemplos de Uso

### Python

```python
from quickcodes import generate, read

# Gerar QR Code de pagamento Pix
generate("QR", "00020126580014BR.GOV.BCB.PIX0114+5551999999995204000053039865405100.005802BR5920Padaria Exemplo6009SAO PAULO62070503***6304ABCD", output="pix.svg")

# Ler um código de barras de imagem
data = read("produto.png")
print(data)  # -> "7891234567890"
```

### JavaScript (Browser)

```javascript
import { generate, read } from "quickcodes-wasm";

// Gerar um EAN-13
let svg = generate("EAN13", "7891234567890");

// Ler QR Code da webcam
let result = await read(videoStream);
console.log(result);
```

### 📸 Exemplos Gerados

Após executar `cargo run --example basic_usage`, você encontrará estes arquivos em `examples/output/`:

- **qr_hello.svg** - QR Code: "Hello, QuickCodes!"
- **ean13_example.png** - EAN-13: 1234567890128
- **upc_a_example.svg** - UPC-A: 036000291452  
- **code128_example.svg** - Code128: "HELLO123"
- **pix_payment.svg** - QR Code para pagamento Pix
- **github_url.png** - QR Code com URL do GitHub

---

## 🎯 Status Atual

✅ **MVP Funcional Completo!**

- ✅ 4 formatos de código implementados (QR, EAN-13, UPC-A, Code128)
- ✅ 2 formatos de exportação (SVG, PNG)
- ✅ 40 testes passando (25 unitários + 12 integração + 3 doctests)
- ✅ API unificada Rust e Python
- ✅ Bindings Python com PyO3
- ✅ Código 100% limpo (0 warnings, clippy aprovado)
- ✅ Exemplos funcionais e documentação completa

```bash
# Teste a biblioteca agora:
git clone https://github.com/marcioreck/quickcodes
cd quickcodes
cargo run --example basic_usage
# Veja os códigos gerados em examples/output/
```

---

## 📌 Roadmap

### 🚀 **Fase 1 - MVP (Núcleo Funcional)** ✅ CONCLUÍDA
* [x] **Configuração do Projeto Rust**
  * [x] Estrutura modular do projeto
  * [x] Sistema de build e testes (25 testes unitários passando)
  * [x] Documentação automática (docs.rs ready)
* [x] **Geradores de Código 1D**
  * [x] Code128 (implementação básica)
  * [x] EAN-13 com checksum automático
  * [x] UPC-A
* [x] **Geradores de Código 2D**
  * [x] QR Code (Low, Medium, Quartile, High error correction)
* [x] **Sistema de Exportação**
  * [x] SVG (vetorial, escalável)
  * [x] PNG (raster, alta qualidade)
  * [x] Configurações de tamanho e DPI
* [x] **Bindings Iniciais**
  * [x] Python (PyO3) - Implementado e testado
  * [ ] JavaScript/Node.js (NAPI-RS)

### 🔧 **Fase 2 - Expansão Industrial**
* [ ] **Códigos 2D Avançados**
  * [ ] DataMatrix (farmacêutica/ANVISA)
  * [ ] PDF417 (documentos oficiais)
  * [ ] Aztec Code (transporte)
* [ ] **Leitura/Decodificação**
  * [ ] Leitor de imagens estáticas
  * [ ] Algoritmos de detecção e correção
  * [ ] Suporte a múltiplos códigos por imagem
* [ ] **Exportação Avançada**
  * [ ] PDF nativo
  * [ ] Canvas/HTML5 integration
  * [ ] Batch processing
* [ ] **WebAssembly**
  * [ ] Build WASM otimizado
  * [ ] API JavaScript para browser
  * [ ] Leitura de webcam em tempo real

### 🌐 **Fase 3 - Ecossistema Completo**
* [ ] **Bindings Adicionais**
  * [ ] Go (CGO)
  * [ ] .NET (P/Invoke)
  * [ ] C/C++ headers
* [ ] **Formatos de Legado**
  * [ ] Code39
  * [ ] ITF-14
  * [ ] Codabar
* [ ] **Ferramentas e Utilitários**
  * [ ] CLI tool (`quickcodes generate`, `quickcodes read`)
  * [ ] API REST em Docker
  * [ ] Benchmarks e performance tests
* [ ] **Recursos Avançados**
  * [ ] Sistema de plugins
  * [ ] Configurações avançadas de renderização
  * [ ] Suporte a fontes customizadas
  * [ ] Watermarks e branding

---

## 📜 Legal Disclaimer

QuickCodes é uma biblioteca de software open source para geração e leitura de códigos de barras lineares (1D) e bidimensionais (2D).

Todos os padrões suportados (EAN, UPC, Code128, Code39, ITF-14, Codabar, QR Code, DataMatrix, PDF417, Aztec, entre outros) são especificados por normas ISO/IEC ou por organizações de padronização (como GS1). Esses padrões são de **uso livre e isentos de royalties para implementação em software**, conforme documentação pública.

⚠️ Observações importantes:

* O termo **"QR Code"** é uma marca registrada da Denso Wave Inc. O uso nesta biblioteca é apenas descritivo, não implica afiliação ou endosso pela Denso Wave.
* Para a **atribuição oficial de códigos de produto (EAN/UPC)** em aplicações comerciais (ex.: venda em supermercados), as empresas devem obter prefixos de código junto à organização **GS1** em seu país, o que pode envolver taxas e anuidades.
* QuickCodes não fornece números de código de barras oficiais, apenas ferramentas de **geração e leitura de imagens** conforme os padrões abertos.

---

## 📄 Licença

Distribuído sob a licença MIT. Consulte o arquivo `LICENSE` para mais detalhes.

---

## Autor

**Márcio Reck**
- Portfólio: [https://fazmercado.com]https://fazmercado.com
- GitHub: [@marcioreck]https://github.com/marcioreck

## Agradecimentos

- **Comunidade**: Pelos feedbacks e contribuições

---

*QuickCodes - Desenvolvido por Márcio Reck*