"Queremos ser como uma árvore, crescer um pouco todos os dias e tentar tocar o céu, sem perder a solidez de nossas raízes." Conheça: www.fcamara.com.br
Criar uma API REST para gerenciar um estacionamento de carros e motos.
Criar um cadastro da empresa com os seguintes campos:
- Nome;
- CNPJ;
- Endereço;
- Telefone;
- Quantidade de vagas para motos;
- Quantidade de vagas para carros.
Todos os campos são de preenchimento obrigatório.
Criar um cadastro de veículos com os seguintes campos:
- Marca;
- Modelo;
- Cor;
- Placa;
- Tipo.
Todos os campos são de preenchimento obrigatório.
- Estabelecimento: CRUD;
- Veículos: CRUD;
- Controle de entrada e saída de veículos.
- Modelagem de dados;
- O retorno deverá ser em formato JSON e XML;
- Requisições GET, POST, PUT ou DELETE, conforme a melhor prática;
- A persistência dos dados pode ser realizada da maneira que preferir;
- Criar README do projeto descrevendo as tecnologias utilizadas, chamadas dos serviços e configurações necessário para executar a aplicação.
- Desenvolver utilizando TDD;
- Criar API de relatório;
- Sumário da quantidade de entrada e saída;
- Sumário da quantidade de entrada e saída de veículos por hora;
- Criar uma solução de autenticação.
- Implementação: Crie um BFF com GraphQL localmente para permitir as operações de CRUD e controle de entrada e saída de veículos. O BFF deve expor as operações e lidar com as interações entre o front-end e o back-end.
- Disponibilização: Após implementar o BFF, disponibilize o projeto publicamente no GitHub, com um link no README para o repositório.
- Documentação: Explique no README os benefícios de usar GraphQL no contexto do projeto, descrevendo também como configurar e rodar o BFF localmente.
- Questões: Além da implementação, responda às seguintes perguntas no README:
- Pergunta 1: Explique o que é o GraphQL e como ele se diferencia de uma API REST tradicional.
- Pergunta 2: Descreva como você implementaria o uso do GraphQL como BFF (Backend for Frontend) neste projeto de gerenciamento de estacionamento. Forneça exemplos práticos.
- Pergunta 3: Quais são os benefícios de utilizar GraphQL em relação à flexibilidade das consultas? Cite possíveis desafios ao utilizá-lo.
- Pergunta 1: Explique os principais conceitos de um banco de dados relacional, como tabelas, chaves primárias e estrangeiras.
- Pergunta 2: No contexto de uma aplicação de gerenciamento de estacionamento, como você organizaria a modelagem de dados para suportar as funcionalidades de controle de entrada e saída de veículos?
- Pergunta 3: Quais seriam as vantagens e desvantagens de utilizar um banco de dados NoSQL neste projeto?
- Pergunta 1: Explique o conceito de metodologias ágeis e como elas impactam o desenvolvimento de software.
- Pergunta 2: No desenvolvimento deste projeto, como você aplicaria princípios ágeis para garantir entregas contínuas e com qualidade?
- Pergunta 3: Qual a importância da comunicação entre as equipes em um ambiente ágil? Dê exemplos de boas práticas.
- Pergunta 1: O que é DevOps e qual a sua importância para o ciclo de vida de uma aplicação?
- Pergunta 2: Descreva como você integraria práticas de DevOps no desenvolvimento desta aplicação de estacionamento. Inclua exemplos de CI/CD.
- Pergunta 3: Cite as ferramentas que você usaria para automatizar o processo de deploy e monitoramento da aplicação.
Crie um fork do teste para acompanharmos o seu desenvolvimento através dos seus commits.
Agradecemos sua participação no teste. Boa sorte! 😄