Sistema de gerenciamento de biblioteca desenvolvido em Java com funcionalidades de CRUD para livros e sistema de empréstimos.
O sistema foi desenvolvido para gerenciar o acervo de uma biblioteca que realiza empréstimos de livros, oferecendo funcionalidades completas de cadastro, consulta, atualização e exclusão de livros, além do controle de empréstimos e devoluções.
- Java 24 - Linguagem principal
- Maven - Gerenciamento de dependências e build
- Javalin - Framework web para criação da API REST
- Thymeleaf - Template engine para páginas web
- JUnit 5 - Testes unitários
- JQwik - Testes baseados em propriedades
- Selenium - Testes automatizados de interface
- JaCoCo - Cobertura de código
- SpotBugs & Checkstyle - Análise estática de código
- Docker - Containerização da aplicação
- CodeQL - Análise de segurança estática
- Snyk - Análise de vulnerabilidades em dependências
- OWASP ZAP - Análise dinâmica de segurança
- GitHub Actions - CI/CD e automação
- Campos obrigatórios: Cada livro deve ter título, autor e ISBN único de 13 dígitos
- Validação: Nenhum campo pode ser nulo ou vazio
- Unicidade: O acervo contém apenas um exemplar de cada livro
- Operações: CRUD completo (Criar, Ler, Atualizar, Deletar)
- Consultas: Busca por ID, título e autor
- Registro: Sistema registra data do empréstimo e data prevista para devolução
- Prazo gratuito: 10 dias corridos a partir da data do empréstimo
- Multas: Após o prazo, cobrança de
R$ 5,00fixo +R$ 0,50por dia adicional - Controle: Registro de empréstimos, devoluções e consulta de livros emprestados
- Java 21 ou superior
- Maven 3.6+
- Git
- Clone o repositório
git clone https://github.com/Shyuu7/CRUD-Biblioteca
cd PB-CRUD-Biblioteca- Instale as dependências
mvn clean install- Execute a aplicação
mvn exec:java -Dexec.mainClass="com.br.infnet.app.Main"- Acesse a aplicação
http://localhost:7000
mvn testmvn test -Dtest="com.br.infnet.service.**.*Test"mvn test -Dtest="com.br.infnet.selenium.**.*Test"mvn surefire-report:report
mvn site -DgenerateReports=falsemvn test jacoco:reportmvn spotbugs:check
mvn checkstyle:check- Pull e execute diretamente
docker run -d -p 7000:7000 --name biblioteca-app shyuu7/crud-biblioteca:latest- Acesse a aplicação
http://localhost:7000- Verifique os logs
docker logs -f biblioteca-app- Pare e remova o container
docker stop biblioteca-app
docker rm biblioteca-appsrc/
├── main/
│ ├── java/
│ │ └── com/br/infnet/
│ │ ├── app/ # Classe principal
│ │ ├── controller/ # Controladores REST
│ │ ├── model/ # Modelos de dados
| | ├── repository/
| | │ ├── implementations # Implementações dos repositórios
| | │ └── interfaces # Interfaces
│ │ ├── service/ # Lógica de negócio
│ │ ├── security/ # Validação e sanitização
│ │ ├── utils/ # Utilitários
│ │ └── view/ # Camada de apresentação
│ └── resources/
│ └── test-data/ # Dados para testes
└── test/
├── java/
│ └── com/br/infnet/
| ├── security/ # Testes de segurança
│ ├── selenium/ # Testes E2E
│ └── service/ # Testes unitários
└── resources/
└── test-data/ # Dados de teste
target/
├── selenium-screenshots/ # Screenshots dos testes Selenium
└── site/
├── surefire-report.html # Relatório HTML dos testes
└── jacoco/ # Relatório de cobertura JaCoCo
O sistema implementa múltiplas camadas de segurança:
- Sanitização de entrada: Prevenção contra XSS e injeção de código
- Validação rigorosa: Verificação de formato e conteúdo dos dados
- Fail-safe: Sistema falha de forma segura e controlada
- Timeouts: Proteção contra operações que consomem muitos recursos
O projeto inclui workflows automatizados para:
- Build automatizado com Maven
- Testes unitários e de integração
- Análise de qualidade de código
- Cobertura de testes
- Testes E2E com Selenium
Descrição: Workflow principal de integração e entrega contínua que executa build e testes unitários, além da criação de uma imagem Docker e seu push para o DockerHub.
Triggers:
- Push nas branches
main,prod - Pull requests para branches
main,prod - Execução manual via
workflow_dispatch
Funcionalidades:
- ✅ Checkout do código fonte
- ☕ Configuração do ambiente Java 21
- 📦 Cache das dependências Maven
- 🔨 Build do projeto com Maven
- 🧪 Execução de testes unitários
- 📊 Geração de relatórios de testes
- 🐳 Construção da imagem Docker
- 📤 Push da imagem para o DockerHub
- 📁 Relatório JaCoCo e arquivo .jar salvos como artefatos diretamente no GitHub
Descrição: Workflow dedicado à análise estática e qualidade do código com múltiplas ferramentas.
Triggers:
- Execução completa do workflow
pipeline-cd-ci.yaml - Push na branch
dev
Funcionalidades:
- 🔍 Checkstyle: Verificação de padrões de codificação
- 🐛 SpotBugs: Detecção de bugs potenciais com saída SARIF
- 🛡️ GitHub Security: Upload automático de resultados de segurança
- 📋 Relatórios exportados como artefatos diretamente no GitHub
- 💾 Cache otimizado para Maven
Descrição: Workflow especializado em testes end-to-end automatizados com Selenium.
Triggers:
- Execução completa do workflow
pipeline-cd-ci.yaml - Agendamento: Segundas-feiras às 6:00 AM (cron:
0 6 * * 1)
Funcionalidades:
- 🖥️ Ambiente Virtual: Configuração do Xvfb para testes headless
- 🌐 Chrome Browser: Instalação e configuração do Chrome estável
- 📥 Docker: Download e execução da imagem Docker criada no pipeline principal
- 🧪 Testes E2E: Execução dos testes Selenium
- 📸 Screenshots: Captura automática de evidências em caso de falha, salvas em
target/selenium-screenshots/ - 📊 Artefatos: Upload dos resultados e evidências como artefatos no GitHub
Descrição: Workflow abrangente de análise de segurança com múltiplas ferramentas SAST e DAST.
Triggers:
- Execução completa do workflow
pipeline-cd-ci.yaml - Push na branch
dev
Funcionalidades:
- 🔒 SAST com CodeQL: Análise estática de segurança do código fonte
- 🔍 Análise de Dependências: Scanner Snyk para vulnerabilidades em dependências
- 🌐 DAST com OWASP ZAP: Testes dinâmicos de segurança na aplicação em execução
- 📊 Relatórios SARIF: Upload automático para GitHub Security
- 🚀 Deploy Automatizado: Staging e produção com aprovação manual
- 📋 Relatórios HTML: Geração de relatórios detalhados do Snyk
- 🐳 Integração Docker: Testes em ambiente containerizado
Otimizações Implementadas:
- 📦 Cache das dependências Maven para builds mais rápidos
- ⏱️ Timeouts configurados para evitar builds infinitos
- 🎯 Execução condicional baseada em sucesso/falha
- 📊 Relatórios sempre gerados, mesmo em caso de falha
Artefatos Gerados:
- Arquivos .jar da aplicação das branches
maineprod - Relatórios de testes unitários (JUnit XML)
- Screenshots dos testes Selenium em
target/selenium-screenshots/ - Relatórios de cobertura JaCoCo
- Resultados do Checkstyle e SpotBugs
- Análises de segurança SARIF (CodeQL e Snyk)
- Relatórios HTML de vulnerabilidades (Snyk)
- Resultados de testes DAST (OWASP ZAP)
Integração Externa:
- GitHub Security: Alertas de segurança automatizados
- DockerHub: Deploy de imagens containerizadas
- OWASP ZAP: Análise dinâmica de segurança
- Snyk: Monitoramento contínuo de vulnerabilidades
Os workflows geram automaticamente:
- Relatórios de Cobertura: Disponíveis na aba "Actions" → "Análise de Qualidade"
- Resultados de Testes: Visualizáveis diretamente nas execuções dos workflows
- Screenshots de Falhas: Capturados automaticamente nos testes Selenium
- Análises de Segurança: Integradas ao GitHub Security
GET /livros- Listar todos os livrosGET /livros/novo- Exibir formulário de cadastroPOST /livros- Cadastrar novo livroGET /livros/{id}/editar- Exibir formulário de ediçãoPOST /livros/{id}/editar- Atualizar livroPOST /livros/{id}/remover- Remover livroGET /buscar- Buscar livros por título, autor ou ISBN
GET /emprestimos- Listar todos os empréstimosGET /emprestimos/livros/{id}/emprestar- Exibir formulário de empréstimoPOST /emprestimos/livros/{id}/emprestar- Registrar empréstimoPOST /emprestimos/livros/{id}/devolver- Registrar devolução
- Formulários para cadastro e edição de livros
- Listagem paginada do acervo
- Sistema de busca por título, autor ou ISBN
- Controle de empréstimos e devoluções
- Cálculo automático de multas
- Desenvolvedora Principal - Larissa Conti