/PagarMe

A API PagarMe é uma proposta de resolução do desafio técnico da Pager.me e oferece um sistema de Payment Service Provider (PSP) super simplificado.

Primary LanguageJavaScript

Bem-vindo ao PagarMe

A API PagarMe é uma proposta de resolução do desafio técnico da Pager.me e oferece um sistema de Payment Service Provider (PSP) super simplificado. Para esta proposta, foi adicionado um sistema de cadastro para que o usuário cadastrado possa realizar transações financeiras quando autorizado. Esta aplicação gera autenticação utilizando bearer token através do JWT e tem como propósito simular o ciclo de uso, que se inicia com o cadastro, autorização e manipulação dos dados. Espero que gostem, foi muito divertido desenvolver esta solução.

Sumário

Contexto

O PagarMe é uma ferramenta que acessa a bases de dados, é permite aos usuários:

  • Fazer login;
  • Cadastrar um novo usuário;
  • Buscar por transações;
  • Criar transações;
  • Buscar por recebiveis;

Quando logado é possivel

  • Buscar por transações;
  • Criar transações;
  • Buscar por recebiveis;

Tecnologias e Ferramentas Utilizadas

Este projeto utiliza as seguintes tecnologias e ferramentas:

  • NodeJS | Plataforma de execução runtime baseda em javascript.
  • Express | Framework para nodejs
  • Mysql | Banco de dados SQL relacional.
  • Sequelize | ORM Object-Ralational-Mapping.
  • JWT | Formatador de token seguro.

O Node.js foi utilizado com o intuito de obter os benefícios da escalabilidade e eficiência, pois ele é capaz de lidar com vários tráfegos sem bloqueio e lida com solicitações com baixo consumo de recursos. O Express é um framework para o Node.js que permite construir aplicações web robustas e escaláveis de forma mais fácil e rápida. O MySQL é um banco de dados amplamente utilizado devido a várias razões. Ele oferece desempenho eficiente e rápido, é altamente escalável e possui uma comunidade ativa que fornece suporte e recursos adicionais. Além disso, o MySQL é flexível, seguro e possui integração com tecnologias populares. O Sequelize é uma biblioteca de mapeamento objeto-relacional (ORM) para Node.js, que simplifica a interação com bancos de dados relacionais, incluindo o MySQL. Com o Sequelize, é possível mapear objetos JavaScript para tabelas e colunas no banco de dados, escrever consultas em JavaScript e gerenciar relacionamentos entre tabelas de forma fácil.O uso do JSON Web Tokens (JWT) em aplicações web oferece várias vantagens. O JWT permite autenticar usuários de forma stateless, eliminando a necessidade de armazenar informações de sessão no servidor. Além disso, o JWT é seguro, pois pode ser assinado digitalmente, garantindo a integridade do token.

Entities

https://drive.google.com/file/d/1av8kgGIu6AWP81UC5Xp0t0t-Jmf4QYb4/view?usp=sharing entidades

Download do projeto

git@github.com:JonathanProjetos/PagarMe.git

Arquivo env

  • Dentro da pasta PagarMe, existe o arquivo .env.example. Nele, será necessário remover o .example e fornecer os dados para a conexão com o banco de dados, bem como uma senha para o JSON Web Token.

Instalar as dependências e executar

cd PagarMe
npm install
npm run dev

Comandos Adicionais

// Inicializa o Eslint
npm run lint

// Dropa o banco de dados
npm run drop

// Cria o banco de dados é adiciona as migrates
npm run create

// Adiciona os seeders
npm run seed 

Docker

  • O tempo de execução do docker-compose terá um acrecimo de cerca de 30 segundos devido as checagens de disponibilidade, os "Health-checks". Este recurso garantirá que tanto o banco de dados quanto a API estejam diponíveis para a execução.
  • Caso a porta 3001 não seja a mais adequada para você. A mudança da porta deve acontecer tanto no arquivo server.js quanto no docker-compose.yml na parte de services/node/ports e services/node/healthcheck.
  • Quando executar a aplicação usando o docker-compose up, as dependências necessárias serão instaladas. Além disso, o banco de dados será criado e as migrações serão executadas. Logo após, a aplicação será disponibilizada através do Nodemon na porta 3001.
cd PagarMe
docker-compose up -d

- logs docker
cd PagarMe
docker logs -f --tail 1000 pagar_bem

Tests

cd PagarMe
npm test
ou 
npm run test:coverage

Deploy

  • Foi realizado o deploy da aplicação no Railway. Logo abaixo, está o link de acesso para a aplicação através do Swagger.

Swagger

  • Foi implementada a documentação por parte do Swagger, que possibilita testar a aplicação de forma mais rápida e intuitiva.
  • O link para a documentação é DOC
  • Alguns end-points séra necessessário oferecer o token para o Authorization no swagger. O token será disponibilizado quando for feito o login é como resposta terá o token. Caso você não forneça o token para a autorização, os endpoints que dependem dele entrarão em um loop no estado de carregamento (loading).

Git, GitHub e Histórico de Commits

Este projeto utilizou a Especificação de Commits Convencionais, com alguns tipos da convenção Angular. Além disso, foi utilizado o pacote conventional-commit-cli para ajudar a seguir a convenção de commits. É importante utilizar a convenção de commits em projetos para manter o histórico de commits organizado e facilitar a leitura e o entendimento do que foi desenvolvido.

Lint

  • O projeto foi desenvolvido seguindo os padrões de Clean Code especificados pelo Lint da Trybe.