├── layout ├── 1.png └── 2.png └── README.md /layout/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hsmiranda/Teste-Desenv-FullStack/HEAD/layout/1.png -------------------------------------------------------------------------------- /layout/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hsmiranda/Teste-Desenv-FullStack/HEAD/layout/2.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Teste Técnico - Desenvolvedor(a) Full Stack 2 | 3 | Quando finalizar o teste, publique tudo no seu [Github](https://github.com) de modo público e envie por email com o título `[Teste Full Stack] Finalizado` para o organizador. 4 | 5 | Criterios de avaliação: 6 | 7 | 1. Conhecimento sobre a stack de tecnologia da avaliação. 8 | 2. Cuidados com as regras de negócio. 9 | 3. Aplicação de principios SOLID e Clean Code. 10 | 4. O uso de padrões de projeto e design patterns. 11 | 5. O uso de boas práticas de programação. 12 | 6. Código seguro com a aplicação trabalhando com o principio Zero Trust. 13 | 7. O sistema deverá conter o Dockerfile e docker-compose para execução da aplicação. 14 | 15 | ## Backend 16 | 17 | Desenvolver uma **API JSON RESTful** em **Java**, utilizando os frameworks *Quarkus ou Spring*, com os métodos (`GET`, `POST`, `PUT`, `DELETE`). 18 | Salvar dados em um banco de dados MySQL ou PostgreSQL e utilizando **JPA**. 19 | 20 | ### Especificação 21 | 22 | Monte uma base de veículo com a seguinte estrutura: 23 | 24 | ``` 25 | veiculo: string 26 | marca: string 27 | ano: integer 28 | descricao: String 29 | vendido: boolean 30 | created: ??? (Escolha livre) 31 | updated: ??? (Escolha livre) 32 | chassi: String 33 | preco: ??? (Escolha livre) 34 | ``` 35 | 36 | Utilize **PostgreSQL** ou **H2** ou **SQLite** através do **JPA** para armazenar os dados que a **API** irá consumir. 37 | 38 | ### API Endpoint 39 | 40 | `GET /veiculos` 41 | 42 | Retorna todos os veículos 43 | 44 | --- 45 | 46 | `GET /veiculos` 47 | 48 | Retorna os veículos de acordo com filtros passados através de query string 49 | 50 | --- 51 | 52 | `GET /veiculos/{id}` 53 | 54 | Retorna os detalhes do veículo 55 | 56 | --- 57 | 58 | `POST /veiculos` 59 | 60 | Adiciona um novo veículo 61 | 62 | --- 63 | 64 | `PUT /veiculos/{id}` 65 | 66 | Atualiza os dados de um veículo 67 | 68 | --- 69 | 70 | `DELETE /veiculos/{id}` 71 | 72 | Apaga o veículo 73 | 74 | 75 | ## Frontend 76 | 77 | Desenvolver **UI (User Interface)** baseado no escopo que está na pasta [layout](https://github.com/hsmiranda/Teste-Desenv-FullStack/tree/master/layout), utilizando HTML, CSS e Javascript (Pode usar jQuery, Vue.js, Angular ou React ou qualquer outro framework Web). 78 | 79 | ### Especificação 80 | 81 | - Consumir **API** criada acima 82 | - Criar uma tela que tenha: 83 | - Listagem de veículos 84 | - Detalhe do veículo 85 | - Busca 86 | - Formulário de novo/edição de veículos 87 | 88 | ### Dica 89 | 90 | Você poderá utilizar bootstrap para auxiliar no desenvolvimento da interface, encontrado através do link: 91 | 92 | - http://getbootstrap.com/css/ 93 | 94 | ## Dúvida 95 | 96 | Se tiver qualquer dúvida sobre esse teste, envie um email ou abra um issue. 97 | 98 | ## Regras de negócios 99 | 100 | As regras de negocio podem ser implementadas no backend, frontend ou em ambos ficando a criterio do tipo de prova. 101 | 102 | - RN001 - Não pode haver veiculos com o mesmo numero de chassi. 103 | - RN002 - O sistema não deve permite preços negativos. 104 | - RN003 - O sistema não deve permitir que veiculos tenham no cadastro ou atualização, ano supeior ao corrente, por exemplo: o ano atual é 2023 e um veiculo estão tentando cadastrar com o ano 2024. 105 | - RN004 - A busca deverá exibir até no máximo 10 resultados por vez. 106 | - RN005 - O sistema deve ser seguro, não permitindo que códigos maliciosos sejam inseridos no meio dos textos. 107 | --------------------------------------------------------------------------------