Sistema completo de gerenciamento de biblioteca desenvolvido com arquitetura de microserviços usando Java 17, Spring Boot 3.3.1, Spring Security 6 e Angular 15.
- Gateway Service (porta 8080) - API Gateway e Eureka Server
- Categoria Service (porta 8081) - Gerenciamento de categorias
- Livro Service (porta 8082) - Gerenciamento de livros
- Usuario Service (porta 8083) - Autenticação e gerenciamento de usuários
- Emprestimo Service (porta 8084) - Gerenciamento de empréstimos
- Java 17
- Spring Boot 3.3.1
- Spring Security 6 (mais atual)
- Spring Cloud 2023.0.2
- Maven para gerenciamento de dependências
- H2 Database (em memória)
- JWT para autenticação
- Spring Cloud Gateway para roteamento
- Netflix Eureka para descoberta de serviços
- OpenFeign para comunicação entre microserviços
- MapStruct para mapeamento de DTOs
- Lombok para redução de boilerplate
- Micrometer + Prometheus para métricas
- SpringDoc OpenAPI para documentação
- JUnit 5 para testes
- Angular 15
- PrimeNG para componentes UI
- Arquitetura Hexagonal
- Arquitetura Hexagonal (Ports and Adapters)
- Domain-Driven Design (DDD)
- SOLID Principles
- Clean Code
- Microservices Pattern
- Java 17+
- Maven 3.6+
- Node.js 16+ e npm (para o frontend)
Linux/Mac:
chmod +x start-services.sh
./start-services.sh
Windows:
start-services.bat
- Compilar o projeto:
mvn clean install -DskipTests
- Iniciar serviços na ordem:
# 1. Gateway Service (Eureka Server)
cd gateway-service
mvn spring-boot:run
# 2. Categoria Service
cd categoria-service
mvn spring-boot:run
# 3. Livro Service
cd livro-service
mvn spring-boot:run
# 4. Usuario Service
cd usuario-service
mvn spring-boot:run
# 5. Emprestimo Service
cd emprestimo-service
mvn spring-boot:run
cd frontend-angular
npm install
npm start
O frontend estará disponível em: http://localhost:4200
- CRUD completo de categorias
- Validação de regras de negócio
- Dados iniciais pré-carregados (15 categorias)
- CRUD completo de livros
- Associação obrigatória com categorias
- Controle de disponibilidade
- Busca por título e autor
- Dados iniciais pré-carregados (10 livros)
- Cadastro e autenticação de usuários
- Diferentes papéis (ADMIN, USER)
- Sistema de bloqueio/desbloqueio
- JWT com Spring Security 6 para autenticação
- Usuários padrão criados
- Empréstimo de livros por usuários autenticados
- Período máximo de 10 dias
- Sistema de devolução
- Controle de atrasos com penalidades
- Bloqueio automático de usuários inadimplentes
- Verificação automática de empréstimos vencidos (scheduler)
-
Administrador:
- Email:
admin@livraria.com
- Senha:
admin123
- Email:
-
Usuário Comum:
- Email:
joao.silva@email.com
- Senha:
123456
- Email:
- Frontend: http://localhost:4200
- Eureka Dashboard: http://localhost:8080
- H2 Console: http://localhost:808X/h2-console (para cada serviço)
- Metrics (Actuator): http://localhost:808X/actuator
- Categoria Service: http://localhost:8081/swagger-ui.html
- Livro Service: http://localhost:8082/swagger-ui.html
- Usuario Service: http://localhost:8083/swagger-ui.html
- Emprestimo Service: http://localhost:8084/swagger-ui.html
- URL:
jdbc:h2:mem:livraria
- Usuário:
livraria
- Senha:
livraria
O sistema carrega automaticamente:
- 15 categorias de livros
- 10 livros de exemplo
- 4 usuários (1 admin + 3 usuários comuns)
# Executar todos os testes
mvn test
# Executar testes de um serviço específico
cd categoria-service
mvn test
- Livros devem ter pelo menos uma categoria
- Apenas usuários autenticados podem fazer empréstimos
- Período máximo de empréstimo: 10 dias
- Devolução em atraso resulta em bloqueio do usuário
- Usuários bloqueados não podem fazer novos empréstimos
- Livros emprestados ficam indisponíveis para outros usuários
- Verificação automática de empréstimos vencidos (a cada hora)
livraria-microservices/
├── pom.xml (parent)
├── commons-module/
├── gateway-service/
├── categoria-service/
├── livro-service/
├── usuario-service/
├── emprestimo-service/
└── frontend-angular/
- Arquitetura Hexagonal em todos os serviços
- Separação clara entre Domain, Application e Infrastructure
- DTOs para transferência de dados
- Mappers para conversão entre entidades e DTOs
- Exception handling global
- Logging estruturado
- Spring Security 6 com JWT
- Validações com Bean Validation
- Spring Security 6 (versão mais atual)
- Configuração moderna de segurança com SecurityFilterChain
- JWT aprimorado com algoritmos seguros
- Verificação automática de empréstimos vencidos
- Frontend Angular 15 com PrimeNG
- Arquitetura Hexagonal no frontend
- Interceptor HTTP para autenticação automática
- Guards de rota para proteção de páginas
Este projeto é desenvolvido para fins educacionais e demonstração de arquitetura de microserviços com as tecnologias mais atuais.
Desenvolvido com ❤️ usando Spring Boot 3.3.1, Spring Security 6, Angular 15 e PrimeNG