É um projeto desenvolvido para a disciplina Engenharia de Software IV (ES4A4) de um sistema bibliotecário baseado no seguinte Diagrama de Classes (com algumas adaptações):
O projeto é composto por uma API REST e uma API GraphQL.
- Em termos técnicos, é uma API que consiste em, basicamente, operações CRUD, realizar login e enviar email.
- Em termos de negócio, é possível cadastrar items e usuários, realizar empréstimos, reservas e devoluções de item.
- Ao que se refere à Engenharia de Software, inclui Engenharia de Requisitos, Metodologias Ágeis, Arquitetura, Design Patterns e Testes Automatizados.
- Java 8+
- IDE para desenvolvimento Java/Spring (recomendável STS, mas pode ser IntelliJ ou Eclipse)
- Lombok: Plugin a ser instalado na IDE para Java para realizar métodos construtor, getters e setters
- Insomnia ou Postman
- PostgreSQL
- DBeaver (opcional, interface gráfica para PostgreSQL)
- Redis
- Docker (opcional)
Caso o lombok não esteja configurado, os métodos getters, setters e construtores vão gerar erros.
Clique aqui para abrir um site de referência para instalar o lombok no STS.
Para configurar um email para enviar emails no sistema no gmail, precisa ativar o acesso a apps menos seguros.
As informações de remetente (username e password) devem estar no arquivo application.yml na pasta src/main/resources.
Um aviso para os desenvolvedores é sempre evitar de deixar as senhas de email expostas.
As configurações de banco de dados (url, driver, username password) também estão no arquivo application.yml na pasta src/main/resources.
Para baixar no windows, pode ser encontrado aqui.
Para ligar o redis no docker, use o comando: docker run -it --name redis -p 6379:6379 redi:5.0.3
- Spring Boot
- Spring GraphQL
- Spring Data
- Spring Security
- Spring Cache
- JPA e Hibernate
- JWT
- Javamailer
- Flyway
- jUnit 5
- Cucumber (que, por ser baseado no jUnit 4, tem um projeto só pra ele)
- Redis
- Feign
Encontram-se na pasta src/test/java:
- Testes Unitários: Feitos pelo jUnit
- Testes de Integração: Feitos pelo jUnit
Foram aplicados as seguintes técnicas de testes:
- Test Driven Design (TDD)
- Behavior Driven Development (BDD)
ELK Stack é um conjunto de ferramentas de coleta e análise de logs.
O Elasticsearch armazena os dados coletados pelo Logstash. O Kibana apresenta dashobards com esses dados.
Essa stack pode ser tanto usado no site oficial (https://www.elastic.co/pt/downloads/) quanto no docker.
Caso instale na máquina local e esteja utilizando windows, siga os seguintes passos em 3 terminais (CMD):
1) LIGAR ELASTICSEARCH
- cd C:\Libs\kibana\bin
- kibana.bat
2) LIGAR LOGSTASH
- Colocar o arquivo syslog.conf (localizado em /.documents) no diretório /conf do logstash
- cd C:\Libs\logstash
- .\bin\logstash.bat -f .\config\syslog.conf
3) LIGAR KIBANA
- Descomentar a linha "elasticsearch.hosts: ["http://localhost:9200"]" em /config/kibana.yml
- cd C:\Libs\kibana\bin
- kibana.bat
O Projeto de DW2A4, que utiliza Angular, é uma aplicação front-end que utiliza as rotas do controller LivroController para exemplicar conceitos do Angular. Por esse motivo, as rotas desse controller não demandam autenticação.