Skip to content

Projeto de NodeJs realizado durante o módulo de Backend na Trybe

Notifications You must be signed in to change notification settings

Gabrielle-Murat/NodeJs-TalkerManager

Repository files navigation

Projeto NodeJs - Talker Manager

NodeJs Logo

📖 Tabela de Conteúdos

Tabela de conteúdos
  1. ➤ Sobre o projeto
  2. ➤ Tecnologias utilizadas
  3. ➤ Descrição do projeto
  4. ➤ Instruções
  5. ➤ Requisitos realizados
  6. ➤ Requisito 1: Criação do endpoint GET `/talker`
  7. ➤ Requisito 2: Criação do endpoint GET `/talker/:id`
  8. ➤ Requisito 3: Criação do endpoint POST `/login`
  9. ➤ Requisito 4: Criação de validações para o endpoint `/login`
  10. ➤ Requisito 5: Criação do endpoint POST `/talker`
  11. ➤ Requisito 6: Criação do endpoint PUT `/talker/:id`
  12. ➤ Requisito 7: Criação de um endpoint DELETE `/talker/:id`
  13. ➤ Requisito 8: Criação de um endpoint GET `/talker/search`
  14. ➤ Créditos

📝 Sobre o projeto

Projeto desenvolvido durante a formação de BackEnd na Trybe com o intuito de consolidar o aprendizado de NodeJs utilizando o framework Express.

💻 Tecnologias utilizadas

Docker Logo VS Code Logo gitHub Logo
NodeJs Logo Nodemon Logo
Express Logo Joi Logo

📄 Descrição

Descrição
Tem-se um arquivo (`talker.json`) que foi utilizado como base para fazer as requisições da API. Todas as operações de leitura e escrita foram realizadas neste arquivo usando métodos da biblioteca `fs`.

Neste projeto eu realizei:

  1. Desenvolvimento de uma API de um CRUD de palestrantes
  2. Desenvolvimento de endpoints que alteram um arquivo utilizando o módulo `fs`

Durante o desenvolvimento foi utilizado Docker.

📜 Instruções

  1. Clone o repositório
  • git clone [email protected]:Gabrielle-Murat/NodeJs-TalkerManager.git
  • Entre na pasta do repositório que você acabou de clonar;

  1. Instale as dependências:
  • npm install

  1. Como restaurar o arquivo talker.json:
  • Execute o comando: npm run restore

  1. Para iniciar o servidor em modo de desenvolvimento:
  • Execute o comando: npm run dev

👩‍💻 Requisitos Realizados:

Criação da API:

Requisito 1: Criação do endpoint GET `/talker`

1. Criar um endpoint para buscar todos os palestrantes cadastrados:
  1.1. Retornar `status 200` e um array com todos os palestrantes cadastrados.
  1.2. Caso não exista nenhum palestrante cadastrado: retornar `status 200` e um array vazio.

Requisito 2: Criação do endpoint GET `/talker/:id`

2. Criar um endpoint para buscar um palestrante por id:
  2.1. Retornar `status 200` e um palestrante baseado no id da rota.
  2.2. Caso não exista nenhum palestrante com o id da rota: retornar `status 404` e a mensagem "Pessoa palestrante não encontrada".

Requisito 3: Criação do endpoint POST `/login`

3. Criar um endpoint para fazer login:
  3.1. O endpoint deve receber os campos `email` e `password` no corpo da requisição.
  3.2. Retornar um token aleatório de 16 caracteres.
  3.3. Retornar `status 200` e o token gerado.
  3.4. O token retornado deve ser aleatório cada vez que o endpoint for acessado.

Requisito 4: Criação de validações para o endpoint `/login`

4. Validar os campos recebidos no corpo da requisição do requisito anterior:
  4.1. Para campos inválidos: retornar `status 400` com a respectiva mensagem de erro.
  4.2. O campo `email` é obrigatório e deve ser um email válido.
  4.3. O campo `password` é obrigatório e deve ter no mínimo 6 caracteres.

Requisito 5: Criação do endpoint POST `/talker`

5. Criar um endpoint para adicionar um novo palestrante ao arquivo de dados e validar os campos recebidos no corpo da requisição:
  5.1. O corpo da requisição deve ter o mesmo formato de cadastro contido no arquivo `talker.json`.
  5.2. A requisição deve ter o token no header, no campo `authorization`.
  5.3. Caso o token não seja encontrado ou seja inválido: retornar `status 401` e a respectiva mensagem.
  5.4. Para campos inválidos: retornar `status 400` com a respectiva mensagem de erro.
  5.5. O campo `name` é obrigatório e deve ter no mínimo 3 caracteres.
  5.6. O campo `age` é obrigatório e deve ser um inteiro maior ou igual a 18.
  5.7. O campo `talk` é obrigatório e deve ser um objeto com as chaves `watchedAt` e `rate`.
  5.8. O campo `watchedAt` é obrigatório e deve ter uma data no formato `dd/mm/aaaa`.
  5.9. O campo `rate` é obrigatório e deve ser um inteiro de 1 a 5.
  5.10. Retornar `status 201` e o palestrante que foi cadastrado.

Requisito 6: Criação do endpoint PUT `/talker/:id`

6. Criar um endpoint para editar um palestrante cadastrado com base no id da rota:
  6.1. O id registrado não deve ser alterado.
  6.2. O corpo da requisição deve ter o mesmo formato de cadastro contido no arquivo `talker.json`.
  6.3. A requisição deve ter o token no header, no campo `authorization`.
  6.4. O token e os campos devem ser validados conforme o requisito 5.
  6.5. Retornar `status 200` e o palestrante que foi editado.

Requisito 7: Criação de um endpoint DELETE `/talker/:id`

7. Criar um endpoint para deletar um palestrante com base no id da rota:
  7.1. A requisição deve ter o token no header, no campo `authorization`.
  7.2. O token deve ser validado conforme o requisito 5.
  7.3. Retornar `status 204` sem mensagem de resposta.

Requisito 8: Criação de um endpoint GET `/talker/search`

8. Criar um endpoint para buscar palestrantes que contenham em seu nome o termo pesquisado no queryParam da URL:
  8.1. A requisição deve ter o token no header, no campo `authorization`.
  8.2. O token deve ser validado conforme o requisito 5.
  8.3. Caso o termo de busca esteja vazio: retornar `status 200` e um array contendo todos os palestrantes cadastrados.
  8.4. Caso não exista nenhum palestrante cadastrado: retornar `status 200` e um array vazio.
  8.5. Retornar `status 200` e um array de palestrantes que satisfaçam a busca.

💳 Créditos

Arquivo de cadastro de palestrantes (talker.json) e docker compose (docker-compose.yml) fornecidos pela Trybe.

Trybe Logo

About

Projeto de NodeJs realizado durante o módulo de Backend na Trybe

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published