└── README.md /README.md: -------------------------------------------------------------------------------- 1 | ### FCamara 🚀 2 | 3 | *"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."* 4 | Conheça: www.fcamara.com.br 5 | 6 | ## Teste para vaga de Desenvolvedor Back-end 7 | Criar uma API REST para gerenciar um estacionamento de carros e motos. 8 | 9 | ## Cadastro de estabelecimento 10 | Criar um cadastro da empresa com os seguintes campos: 11 | - Nome; 12 | - CNPJ; 13 | - Endereço; 14 | - Telefone; 15 | - Quantidade de vagas para motos; 16 | - Quantidade de vagas para carros. 17 | 18 | **Todos** os campos são de preenchimento obrigatório. 19 | 20 | ## Cadastro de veículos 21 | Criar um cadastro de veículos com os seguintes campos: 22 | - Marca; 23 | - Modelo; 24 | - Cor; 25 | - Placa; 26 | - Tipo. 27 | 28 | **Todos** os campos são de preenchimento obrigatório. 29 | 30 | ## Funcionalidades 31 | - **Estabelecimento:** CRUD; 32 | - **Veículos:** CRUD; 33 | - **Controle de entrada e saída de veículos.** 34 | 35 | ## Requisitos 36 | - Modelagem de dados; 37 | - O retorno deverá ser em formato JSON e XML; 38 | - Requisições GET, POST, PUT ou DELETE, conforme a melhor prática; 39 | - A persistência dos dados pode ser realizada da maneira que preferir; 40 | - Criar README do projeto descrevendo as tecnologias utilizadas, chamadas dos serviços e configurações necessário para executar a aplicação. 41 | 42 | ## Ganha mais pontos 43 | - Desenvolver utilizando TDD; 44 | - Criar API de relatório; 45 | - Sumário da quantidade de entrada e saída; 46 | - Sumário da quantidade de entrada e saída de veículos por hora; 47 | - Criar uma solução de autenticação. 48 | 49 | ## Questionário para Avaliação de Competências 50 | 51 | ### 1. GraphQL (Implementação BFF - Backend For Frontend) 52 | - **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. 53 | - **Disponibilização:** Após implementar o BFF, disponibilize o projeto publicamente no GitHub, com um link no README para o repositório. 54 | - **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. 55 | - **Questões:** Além da implementação, responda às seguintes perguntas no README: 56 | - **Pergunta 1**: Explique o que é o GraphQL e como ele se diferencia de uma API REST tradicional. 57 | - **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. 58 | - **Pergunta 3**: Quais são os benefícios de utilizar GraphQL em relação à flexibilidade das consultas? Cite possíveis desafios ao utilizá-lo. 59 | 60 | ### 2. Banco de Dados (Nível Básico) 61 | - **Pergunta 1**: Explique os principais conceitos de um banco de dados relacional, como tabelas, chaves primárias e estrangeiras. 62 | - **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? 63 | - **Pergunta 3**: Quais seriam as vantagens e desvantagens de utilizar um banco de dados NoSQL neste projeto? 64 | 65 | ### 3. Agilidade (Nível Básico) 66 | - **Pergunta 1**: Explique o conceito de metodologias ágeis e como elas impactam o desenvolvimento de software. 67 | - **Pergunta 2**: No desenvolvimento deste projeto, como você aplicaria princípios ágeis para garantir entregas contínuas e com qualidade? 68 | - **Pergunta 3**: Qual a importância da comunicação entre as equipes em um ambiente ágil? Dê exemplos de boas práticas. 69 | 70 | ### 4. DevOps (Nível Básico) 71 | - **Pergunta 1**: O que é DevOps e qual a sua importância para o ciclo de vida de uma aplicação? 72 | - **Pergunta 2**: Descreva como você integraria práticas de DevOps no desenvolvimento desta aplicação de estacionamento. Inclua exemplos de CI/CD. 73 | - **Pergunta 3**: Cite as ferramentas que você usaria para automatizar o processo de deploy e monitoramento da aplicação. 74 | 75 | ## Submissão 76 | Crie um fork do teste para acompanharmos o seu desenvolvimento através dos seus commits. 77 | 78 | ## Obrigado! 79 | Agradecemos sua participação no teste. Boa sorte! 😄 80 | --------------------------------------------------------------------------------