Uma API REST de alta performance para o gerenciamento completo de bibliotecas, construída com foco em boas práticas de engenharia de software, segurança robusta e validação rigorosa de regras de negócio.
O sistema foi desenhado para ser desacoplado, escalável e seguro, utilizando padrões modernos do ecossistema Spring com Java 21.
O núcleo da segurança da API. Nenhuma requisição a rotas protegidas é processada sem antes passar por um filtro de validação customizado, que garante a autenticidade e a autorização do usuário.
- Stateless: A autenticação é 100% sem estado, ideal para arquiteturas distribuídas.
- Controle de Acesso: O token carrega a
roledo usuário (ADMINouUSER), permitindo um controle de acesso granular nos endpoints.
O sistema vai além de um simples CRUD, implementando regras de negócio complexas de forma segura dentro de transações atômicas.
- Integridade Garantida: Operações críticas como
realizarEmprestimosão anotadas com@Transactional. Se qualquer etapa falhar (ex: o livro fica indisponível no último segundo), a operação inteira é revertida (rollback), garantindo que não haja dados inconsistentes no banco. - Lógica Encapsulada: As regras (ex: "usuário pode emprestar?") são encapsuladas dentro das próprias entidades, tornando o código mais limpo e orientado a objetos.
📄 Clique para ver a Documentação Interativa da API (Swagger UI)
Todos os endpoints, DTOs e requisitos de segurança estão documentados e são testáveis em tempo real.
- Gestão de Usuários: CRUD completo de usuários, incluindo listagem, busca por ID, bloqueio/desbloqueio manual e alteração de nível de acesso (
role). - Gestão do Acervo: Cadastro e remoção de livros do sistema.
- Autosserviço: Cadastro, login e um endpoint para que o próprio usuário possa "pagar" suas multas e se desbloquear.
- Consulta de Livros: Acesso à lista de livros disponíveis para empréstimo.
- Fluxo de Empréstimo: Capacidade de realizar empréstimos e devoluções.
- Linguagem: Java (JDK 21).
- Framework Core: Spring Boot 3.4+.
- Segurança: Spring Security com autenticação JWT (via
auth0/java-jwt). - Persistência: Spring Data JPA / Hibernate com otimizações de performance (índices
UNIQUEemcpfeemail). - Banco de Dados: MySQL.
- Infraestrutura: Docker e Docker Compose para um ambiente de desenvolvimento e produção consistente.
- Documentação: Swagger UI (OpenAPI 3).
- Clone o repositório:
git clone https://github.com/gu-pereira/api-libary.git cd api-libary - Inicie o ambiente com Docker:
O
docker-compose.ymlpossui umhealthcheckque garante que a API só inicie após o banco de dados estar 100% operacional.docker-compose up --build
- Acesse a documentação e comece a testar:
http://localhost:8080/swagger-ui.html
Este projeto está sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.
Desenvolvido por Gustavo Pereira
"A elegância em software não é a ausência de complexidade, mas a sua maestria. É sobre construir sistemas que são não apenas funcionais, mas fundamentalmente sólidos."

