Skip to content

A aplicação consiste em uma API que comunica com dois bancos de dados, um relacional (de usuários) e outro não relacional (de super heróis), realizando operações de CRUD.

Notifications You must be signed in to change notification settings

marcelocampos66/super-heroes-list-api

Repository files navigation

Super Heroes List Api - 🚧 Em desenvolvimento 🚧

Generic badge Generic badge Generic badge Generic badge Generic badge

A aplicação consiste em uma API que comunica com dois bancos de dados, um relacional (de usuários) e outro não relacional (de super heróis), realizando operações de CRUD.

(Gif da aplicação aqui)


Desafio proposto

A proposta por trás deste projeto foi desafiar os conhecimentos de programação full stack, por isso foi decidido que os padrões de código e desenvolvimento deveriam seguir as melhores práticas de mercado.

Utilizando essa API, o FrontEnd terá acesso a uma base de mais de 700 personsagens para consulta, cadastro, atualização e exclusão dos mesmos, e com a opção de criação de uma lista personalizada com seus heróis favoritos.


Decisões técnicas

Considerando o desafio proposto foram tomadas as seguintes decisões técnicas:

Controle e planejamento

  • Trello
  • DM às 9h
  • Design via Figma
  • Fluxogramas: De navegação e de fluxo de dados
  • Documentação do código

    Rotas

    Basicamente, a aplicação é dividida em dois Routers principais:

    - Router de users, que comunica com um banco relacional PostgreSQL e é responsável por todas as operações com usuários e seus registros dentro da aplicação.

    - Router de heróis, que comunica com um banco não relacional MongoDB e é responsável por todas as operações com personagens da aplicação.

    Users:

  • 'GET /users' - Esse endpoint traz todos os usuários cadastrados no banco com suas respectivas listas de super heróis favoritos.
  • 'POST /users/login' - Esse endpoint recebe as credenciais de login do usuário e retorna um token gerado via JWT, que será utilizado para autenticação do usuário durante a utilização da aplicação.
  • 'POST /users' - Esse endpoint recebe dados de cadastro, que se forem validados e caso não exista nenhum outro usuário cadastrado com o mesmo e-mail, realiza o cadastro de um novo usuário no banco de dados.
  • 'POST /users/:heroId' - Esse endpoint recebe como parametro o Id do herói que será registrado na lista do usuário.
  • 'DELETE /users/:heroId' - Esse endpoint recebe como parametro o Id do herói que será excluido da lista do usuário.
  • 'GET /users/selfuser' - Esse endpoint traz todos os dados de cadastro do usuário autenticado na aplicação.
  • 'PUT /users/update-infos' - Esse endpoint é utilizado para a atualização dos dados cadastrais do usuário, ele recebe no corpo da requisição todos os dados atualizados, que se for validados, realiza a atualização no banco de dados.

  • Super Heroes:

  • 'GET /heroes?page=' - Esse endpoint recebe via queryString o número de uma página, que caso seja um valor válido, retorna um array com 12 heróis (uma página), referente ao número que foi passado via query.
  • 'GET /heroes/:id' - Esse endpoint recebe via parametro o id de um herói, que se for válido, retorna um objeto com todos os dados do herói.'
  • 'GET /heroes/mylist' - Esse endpoint traz a lista personalizada de heróis do usuário autenticado.
  • 'GET /heroes/quantity' - Esse endpoint traz a quantidade de heróis cadastrados no banco de dados.
  • 'GET /heroes/search?name=' - Esse endpoint recebe via queryString um termo de pesquisa, é realizada uma busca no banco de dados por todos os heróis que possuírem no nome o termo buscado, são todos retornados dentro de um array, caso não seja encontrado nenhum herói, é retornado um array vazio.


  • Aplicação em produção

    É possível verificar o vídeo da aplicação em produção neste "link" (Em desenvolvimento)

    Há possibilidade de rodar localmente a aplicação por meio dos seguintes passos: (Em desenvolvimento)



    Equipe

    Jhonatan Marcelo
    Jhonatan Arguello Marcelo Campos
  • About

    A aplicação consiste em uma API que comunica com dois bancos de dados, um relacional (de usuários) e outro não relacional (de super heróis), realizando operações de CRUD.

    Topics

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published

    Contributors 2

    •  
    •