Este projeto consiste em uma API RESTful versátil projetada para a geração de QR Codes personalizáveis e o gerenciamento eficiente de convidados para eventos diversos. Através desta API, usuários podem criar QR Codes adaptáveis, permitindo ajustes em tamanho, cor, e oferecendo alternativas entre download direto e visualização online.
Além de sua funcionalidade principal de geração de QR Codes, a API se estende para facilitar o gerenciamento de convidados, incorporando recursos para o cadastro e a confirmação de presença de convidados via QR Codes únicos. Esses QR Codes podem ser utilizados para uma variedade de propósitos, incluindo, mas não se limitando a, controle de acesso a eventos, validação de identidade e facilitação no gerenciamento de registros de presença.
Implementada com uma arquitetura baseada em microserviços, esta API adota as melhores práticas de desenvolvimento, incluindo separação de responsabilidades através da distinção entre camadas de Controller e Service, injeção de dependências para maior flexibilidade e manutenibilidade do código, e o uso de padrões reativos com Spring WebFlux para lidar com eventos de maneira não bloqueante, garantindo assim um desempenho superior em ambientes com alto volume de requisições.
Este projeto é ideal para organizadores de eventos, sistemas de gestão de acesso, e desenvolvedores que buscam integrar funcionalidades de geração de QR Code e gerenciamento de convidados de forma eficiente e escalável em suas aplicações.
- Separação em camadas (Controller, Service)
- Injeção de dependências com Spring
- Uso de Record para representação de dados
- Reativo com Spring WebFlux
Java 21
Spring Boot 3.2.2
Spring WebFlux
Lombok
ZXing
PostgreSQL
com R2DBC para reatividade no acesso ao banco de dadosDocker
para conteinerização
- Método:
GET
URL: /api/v1/qrcode?texto={texto}&scale={scale}&foreground={foreground}&background={background}&download={download}&base64={base64}
Descrição: Gera um QR Code com as opções especificadas.
Parâmetros
texto:
O texto que será codificado no QR Code.scale:
A escala (tamanho) do QR Code.foreground:
A cor do primeiro plano do QR Code.download:
A cor do plano de fundo do QR Code.download:
Opção para download do QR Code (valores possíveis: "true", "false").base64:
Opção para retornar o QR Code em formato base64 (valores possíveis: "true", "false").
Você pode testar o endpoint com o seguinte payload:
{
"texto": "https://www.reddit.com",
"scale": 200,
"foreground": "#9C27B0",
"background": "#E1BEE7",
"download": "false",
"base64": "false"
}
- Método:
POST
URL: localhost:8080/api/v1/convidados/cadastrar
Descrição: Cadastra um convidado e gera um QR Code único para confirmação de presença.
Exemplo de Payload para Cadastro de Convidado
{
"nome": "Fulano de Tal",
"email": "fulano@example.com"
}
Nota: Os campos idUnico, status e qrCode são gerados automaticamente pelo sistema e não devem ser incluídos no payload de envio.
- Método:
POST
URL: localhost:8080/api/v1/convidados/confirmar/{idUnico}
Descrição: Confirma a presença de um convidado através do ID único fornecido pelo QR Code.
Exemplo para Confirmar Convidado
localhost:8080/api/v1/convidados/confirmar/e5b87a8c-6ed4-4995-b272-66d3d9dc5ba9
Imagem com os endpoints no Swagger:
URL para acessar o Swagger:
localhost:8080/swagger-ui.html
Para executar o projeto, é necessário ter o Java 21 e o Maven instalados, além de Docker para a conteinerização.
git clone https://github.com/pauloruszel/api-gen-barcode.git
cd api-gen-barcode
mvn clean package
docker-compose up --build
A API estará disponível em http://localhost:8080.
A aplicação permite a geração de QR Codes personalizados, incluindo opções para definir o tamanho, as cores do primeiro plano e do fundo, e se a imagem deve ser baixada ou visualizada no navegador. Também é possível retornar a imagem em formato base64.