Git Product home page Git Product logo

quoteapi-oneblue-nodejrtest's Introduction

Quote API, uma api para você armazenar frases e buscar frases motivadoras de outros usuários.

Essa API foi desenvolvida afim de resolver um desafio técnico de vaga JR em NodeJS. Ela tinha a seguinte descrição:

Desafio

Desenvolver a API de um produto similar ao Pensador. O objetivo é que usuários possam se cadastrar, e após cadastro publicar seus pensamentos (citações). Essas citações podem ser curtida tanto pelo proprio usuário, como também por outros usuários logados.

Funcionalidades

  1. O usuário pode criar, excluir, editar e visualizar sua conta.
  2. O usuário pode criar, excluir, editar e visualizar suas citações.
  3. O usuário pode visualizar a listagem de todas as citações de todos usuários, ordenadas por data.
  4. O usuário logador poderá curtir citações de outros usuários ou de si mesmo.

Restrições

  1. O usuário NÃO PODE excluir e editar a conta de outros usuários.
  2. O usuário NÃO PODE excluir e editar as publicações de outros usuários.

Diferenciais

  1. Documentação da API
  2. Teste na API

Sobre a construção

Ficava em aberto todos os campos necessários para criar uma conta ou para criar uma citação, então para isso criei um modelo de usuário (Author) e um modelo de citação (Quote).

O usuário Author tem os campos:

  • name, nome do usário
  • nameAsQuote, nome fictício atrelado a citação
  • email, usado para autenticação
  • password, usado para autenticação

A frase Quote tem os campos:

  • quote, a citação/frase
  • author, o dono/criador da citação
  • createdAt, a data de criação, que seria utilizada para listagem de mais recente para a mais antiga

Para identificar cada usuário também seria necessário algum tipo de identifição básica, assim foi utilizado através da Basic Authorization do HTTP o método de autenticação Barear Token, onde seria possível passar pelos headers de cada requisição a identificação do usuário que estaria realizando aquela requisição.

A seguir tem algumas tasks que seguir para concluir o projeto, usando claro boas práticas de programação e designs patterns como usecases, repositories e singletons.

Tasks

Author

  • Create a author (POST /author)
  • Delete a author account (DELETE /author with BT)
  • Update a author informations (PATCH /author with BT)
  • View a author informations (GET /author with BT)
  • Login in an author account (POST /auth)

*BT = Barear Token

Quote

  • Create a quote (POST /quotes with BT)
  • List quotes of all user order by create date (GET /quotes)
  • Update a quote of quote (PATCH /quote with BT)
  • Delete a quote (DELETE /quote with BT)
  • Like a quote (owner or others users) (PUT /quote/:quoteId/like with BT)
  • Dislike a quote (owner or others users) (PUT /quote/:quoteId/dislike with BT)

*BT = Barear Token

Express

  • Create routes for Authors
  • Create routes for Quotes

Units Tests

  • Authors units tests
  • Quotes units tests

Documentation

  • Doc the API with SWAGGER

Como usar esse projeto

É necessário você ter instalado o node na versão v18.14.0 ou superior e o yarn. Caso não tenha o comando yarn, digite npm i -g yarn que você terá acesso ao comando yarn no seu terminal.

Após clonar esse repositório na sua máquina, utilize o comando yarn para instalar as depedências. Renomei o arquivo .env.example para .env e preencha os campos de JWT_SECRET e PORT para sua preferência.

Para rodar o projeto em modo de produção utilize o comando yarn start, para desenvolvimente utilize yarn deve para rodar testes unitários utilize o comando yarn test. Todos os dados são salvos In Memory por enquanto.

Sobre

Projeto feito para vaga em NodeJS júnior da One Blue durante 3 dias. Infelizmente a vaga foi cancelada mas o projeto fica de destaque para meu portifólio backend.

Qualquer dúvida pode entrar em contato comigo pelo email [email protected] ou no meu linkedin.

quoteapi-oneblue-nodejrtest's People

Contributors

alequisk avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.