Burger Sale - Server Side
Este repositório contém somente a aplicação server(back-end) para ter a aplicação rodando completamente é necessário subir a aplicação cliente(front-end) em paralelo conforme instruções.
Aplicação client https://github.com/danielsmanioto/burger-client
Aplicação server https://github.com/danielsmanioto/burger-server
Aplicação de testes (funcionais) https://github.com/danielsmanioto/burger-test
Swagger - Documentação da API http://localhost:80/swagger-ui.html
API rodando no Heroku https://ds-burger-server.herokuapp.com/swagger-ui.html
cd devops
execute o arquivo build.sh (exemplo no linux-> ./build.sh)
execute o arquivo run.sh
Verificar se API está no ar -> http://localhost:80
Agora siga os passos na aplicação client
Subir aplicação
mvn clean install && mvn spring-boot:run
Executar os testes e verificar cobertura de testes
mvn clean test
Verificar cobertura de testes:
./target/site/jacoco/index.html
Clean code: métodos intuitivos e sem comentários desnecessários;
SOLID: Usado os princípios de SOLID para mapeamento e implementação de todas as classes com objetivo de manter o sistema escalável, desacoplado.
MVC: Organização em camadas para desacoplar as regras corretamente
Controller ou Resource: Chamada da regra de negócio e disponibilização em Json para o externo;
Service: Regra de negócio;
Repository ou DAO: Regra e persistência com banco de dados ou qualquer que seja o tipo de persistência;
Model: Java bean.
TDD: Uso de testes unitários automatizados para garantir a qualidade do código em pequenos blocos e prática em escrever o código antes da regra. Com objetivo final de reduzir o acoplamento e ter um sistema com alta coesão e escalável.
Padrão de projeto Builder: Separar a logica de criação dos objetetos
Padrão de projeto Strategy: Para separar a regra de discontos
Injeção de dependência e uso de interface: no service para garantir um contrato e obrigatoriedade de implementação das regras fundamentais de cada funcionalidade.
API REST verbos: Uso de padrões de API para mapeamento correto e intuitivo dos métodos expostos pela API. Organização do projeto: Organização dos pacotes do projeto com objetivo de facilitar o entendimento e auxiliar na evolução do sistema.
Teste Unitário: Garantir cobertura de regra de negocio
Teste de Integração: Garantir que nossa API esteje sempre funcionando e integrando corretamente com outros sistemas.
Teste Funcional: Criado uma aplicação externa(conforme documentação) para realizar os testes funcionais de ponta a ponta.
Tecnologias do back-end:
- JDK 1.8+
- Maven
- Spring-Boot
Requisitos:
- JDK 1.8
- Maven
- Ter um browser instalado na maquina
- Ter Docker instalado na maquina
- É necessário instalar o plugin do lombok em sua IDE de preferência.
TravisCI:
- application.properties : produção (Docker e banco de dados)
- applications-dev.properties : dev (Docker e banco de dados)
- applications-local.properties : local (Local com Banco de dados H2)
#Usando no Heroku
heroku login
heroku auth:token
travis encrypt $(heroku auth:token) --add deploy.api_key
cat ~/.netrc