Repositório possuí projeto desenvolvido para o Desafio Técnico - Full Stack Junior
, para a empresa NaranjaLabs
.
Por algum motivo as rotas especificas e de post estão como /job
ao invés de /jobs
. Não sei se foi um erro ou uma pegadinha, mas resolvi seguir conforme as instruções.
- Nome: Ludson Pereira dos Santos.
- Linkedin:
- Github: @ludson96
- Telefone: (21) 99108-1759
- Email: [email protected]
-
Fiz a interatividade e animação como se fosse em uma pagina real, no caso o menu está com a "borda" inferior conforme passa o mouse, também usei as mesma informações de cor, espaçamento e tamanho do hero, mesmo eu querendo colocar o tamanho da palavra toda;
-
A cada pagina selecionada ele altera a cor do menu selecionado, mas como não tem nenhuma pagina além da home, irá exibir not found, mas fiz como se fosse implementar no futuro.
Em front end para provar os conhecimento em Next.js
tinha a escolha de desenvolver um dos heroes a seguir: Heroes.
Em Back end desenvolvi rotas utilizando Next.js.
Tanto o front-end quanto o back-end foram feitos no mesmo projeto do Next.js.
-
Clone o repositório (recomendado usar em SSH) e entre na pasta:
git clone https://github.com/ludson96/fullstack-junior-1 cd fullstack-junior-1
-
Instale as dependências:
npm install
-
Execute a aplicação em modo de
desenvolvimento
:npm run dev
-
Para testar as rotas, deve haver uma instância em execução, utilize algum API Rest Client, recomento usar o thunder client. Há um arquivo
collection_Naranja Labs.json
com a coleção contendo todas as rotas, basta importá-lo e executar as rotas:
Jobs (Job)
Caso o secret seja diferente de "naranja-labs", retorna status HTTP 401 (Unauthorized) e a mensagem "Secret provided is invalid. Make sure the correct secret is being sent
Retorna todos os jobs do arquivo jobs.ts
Funciona da seguinte forma:
/jobs
(GET
)- retorna um json com status 200 e um array com todas as informações do jobs.
- Exemplo de resposta:
[ { "id": 1, "job": "Full Stack Developer", "level": "Junior", "status": "open" }, { "id": 2, "job": "Frontend Developer", "level": "Junior", "status": "closed" }, { "id": 3, "job": "Backend Developer", "level": "Junior", "status": "closed" }, { "id": 4, "job": "Full Stack Developer", "level": "Senior", "status": "closed" } ]
- Exemplo de resposta:
- retorna um json com status 200 e um array com todas as informações do jobs.
Retorna todos os jobs do arquivo jobs.ts com o level=Junior
Funciona da seguinte forma:
/jobs?level=Junior
(GET
)- retorna um json com status 200 e um array com todos os jobs level junior.
- Exemplo de resposta:
[ { "id": 1, "job": "Full Stack Developer", "level": "Junior", "status": "open" }, { "id": 2, "job": "Frontend Developer", "level": "Junior", "status": "closed" }, { "id": 3, "job": "Backend Developer", "level": "Junior", "status": "closed" } ]
- Exemplo de resposta:
- retorna um json com status 200 e um array com todos os jobs level junior.
Retorna informações de um job específico
Funciona da seguinte forma:
/job/[id]
(GET
):- recebe um
id
pelo caminho da rota e retorna o job com esseid
.-
Exemplo de resposta para a rota
/job/3
(supondo que exista um job comid = 3
):{ "id": 3, "job": "Backend Developer", "level": "Junior", "status": "closed" }
-
- caso não tenha sido informado um
id
, a rota retorna o status HTTP 400 com a mensagemJob ID is required.
no corpo da resposta. - caso tenha sido informado algo diferente de um número no lugar do
id
, a rota retorna o status HTTP 404 com a mensagemID must be a number.
no corpo da resposta. - caso não exista um job com esse
id
, a rota retorna o status HTTP 404 com a mensagemJob ID not found.
no corpo da resposta.
- recebe um
Cria um novo cadastro
Funciona da seguinte forma:
/job/submit
(POST
)- deve receber via corpo do POST os dados de um cadastro.
- Exemplo de requisição:
{ "name": "Ludson", "age": 25, "phone": "(21) 99999-9999", "state":"RJ", "city": "Duque de Caxias" }
- Exemplo de requisição:
- em caso de sucesso:
-
retorna o status HTTP 201 (CREATED) e uma mensagem conforme abaixo.
- Exemplo de resposta:
{ "message": "Thank you for your application, Ludson." }
-
- todo so campos do body são obrigatórios e validados de acordo com seu tipo.
-
caso não seja enviado nada no corpo da requisição retorna status HTTP 400 e uma mensagem conforme abaixo:
{ "message": "Request body is empty. Please provide the required data in the request body." }
-
- deve receber via corpo do POST os dados de um cadastro.