A ideia do projeto é simular o funcionamento do backend de um blog através da implementação de uma aplicação em Node.js usando o pacote sequelize para fazer um CRUD de posts. Para a realização do projeto, algumas metas deviam ser batidas e essas são descritas abaixo:
Aqui deve ser possível criar um usuário, caso o mesmo não exista. Para isso deve ser enviado à aplicação um objeto JSON contendo:
- DisplayName: o nome que aparecerá para o usuário cadastrado;
- Email: Cada email somente poderá ser cadastrado na plataforma uma vez;
- Password: Deverá conter a senha que o usuário irá utilizar para fazer Login na plataforma, esta deverá conter no mínimo 6 carácteres.
Caso o email já tenha sido cadastrado uma mensagem de erro deverá informar que o usuário já existe.
Realizado o cadastro com sucesso a aplicação deverá devolver um token JWT que garantirá o acesso às funcionalidades da aplicação.
A aplicação deve possuir uma página de login caso o usuário já seja cadastrado. Nessa página um objeto JSON contendo email e senha deve ser enviado à aplicação. Caso seja informado dados válidos a aplicação devolverá um token de acesso, caso contrário ela devolverá um erro informando que os dados inseridos são inválidos.
A aplicação deve ser capaz de listar todos os usuários cadastrados, para isso será necessário informar à aplicação um token de acesso válido, a partir desse ponto todas as rotas necessitam de um token de acesso.
Além de listar todos os usuários a aplicação deve ser capaz de devolver cada usuário individualmente, para isso basta informar na url da requisição o id do usuário desejado.
Quem já acessou um blog ou um site de compras sabe que cada item de uma aplicação possuí uma categoria para possibilitar filtrar itens semelhantes. A aplicação torna necessária a habilidade de criar categorias novas através desse endpoint.
Para criar uma categoria é necessário informar o nome da categoria que deseja criar.
A aplicação deve ser capaz de listar todas as categorias criadas até o momento.
O usuário pode criar um post novo no blog, para isso ele deverá enviar um objeto JSON em sua requisição contendo:
title: titulo de sua postagem; content: conteúdo da sua postagem; categoryIds: o número de identificação de cada uma das categorias em que seu post se enquadra. Observação, todos os ids devem ser ids válidos.
A aplicação deve ser capaz de mostrar todos as postagens criadas até o momento. O retorno deve conter as informações abaixo:
Similar ao item anterior, se for requisitado com o id correto de um post, a aplicação deverá devolver todas as informações referentes aquela postagem.
A aplicação deve ser capaz de deixar o usuário atualizar uma postagem sua. Para isso será verificado se o token JWT condiz com o id de usuário do criador da postagem.
O usuário deve ser capaz de deletar suas postagens através do id da mesma. Será verificado se o usuário é dono daquela postagem.
O usuário deve ser capaz de remover sua conta do banco de dados da aplicação.
Deve ser possível pesquisar uma publicação através de seu conteúdo e/ou seu título.