# 📦 QR Code Generator API
API para geração de QR Codes em **PNG**, com upload para **storage externo** (ex.: Amazon S3) e retorno da **URL pública** de acesso.
Desenvolvida em **Java + Spring Boot**, seguindo conceitos de **Ports & Adapters (Hexagonal Architecture)**.
---
## 🚀 Tecnologias Utilizadas
- **Java 21**
- **Spring Boot**
- **Spring Web**
- **ZXing** (geração de QR Codes)
- **AWS SDK / S3** (storage)
- **Maven** (build e dependências)
- **Docker** (infraestrutura)
---
## 📂 Estrutura do Projeto
```bash
src/main/java/com/pierri/qrcode
│
├── dtos/ # Objetos de transporte (Request / Response)
│ ├── QrCodeGenerateRequest.java
│ └── QrCodeGenerateResponse.java
│
├── infra/ # Implementações concretas de infraestrutura
│ └── S3StorageAdapter.java
│
├── ports/ # Definições de interfaces (contratos)
│ └── StoragePort.java
│
├── resources/ # Controllers / Endpoints REST
│ └── QrCodeResource.java
│
├── services/ # Casos de uso / Regras de negócio
│ └── QrcodeApplication.java
│
└── QrcodeApplication.java # Classe principal (Spring Boot Application)- Receber um texto de entrada.
- Gerar QR Code em PNG.
- Enviar o arquivo para o storage configurado.
- Retornar a URL pública para acesso ao QR Code.
Gera um QR Code a partir de um texto.
Request Body:
{
"text": "https://meusite.com"
}Response 200:
{
"url": "https://bucket-s3.s3.amazonaws.com/uuid.png"
}Possíveis Erros:
400 Bad Request→ texto inválido.500 Internal Server Error→ falha inesperada na geração ou upload.
git clone git@github.com:pierrialexandervidmar/API-QrCode.git
cd API-QrCode./mvnw clean package./mvnw spring-boot:rundocker build -t qrcode-generator .
docker run -p 8080:8080 qrcode-generator- Ports (interfaces): definem contratos (
StoragePort) independentes de implementação. - Adapters (infra): implementam esses contratos (
S3StorageAdapter). - Services: contêm a regra de negócio de geração de QR Codes.
- Resources: expõem a API REST para o mundo externo.
Isso permite facilidade de testes, isolamento de regras de negócio e troca simples de infraestrutura (ex.: trocar S3 por Google Cloud Storage).