moog / pokemarket-lts

Teste da Pagarme

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status

Pokemarket

Refactoring de código para utilizar a API da Pagar.me

Desafio

Basicamente é um projeto bem simples, mas com o código completamente abandonado. A idéia é entender o que este código faz para então consertar e refatorar o que achar necessário. Desde que o código atenda a funcionalidade inicial (que é extremamente básica), sinta-se livre para adicionar ou remover o que quiser dele. Note que este código contém desde pequenos erros até questões extremamente importantes que estão faltando. O objetivo final é entregar um projeto completo, seguro, pronto para produção e de fácil manutenção.

Não fique preso a apenas refatorar o código, altere o que achar necessário para deixar o projeto em um estado pronto para produção, então escolha querer evoluir o quanto quiser, mas cuidado apenas com over engineering.

Instalação

Instalação do Node.js 6.10.2 e do NPM

  • Node.js versão 6.10.2
  • Instruções de instalação neste link
  • Ao final, verificar a versão de ambos para confirmar:
node -v
npm -v
  • Recomenda-se o uso de n para versionar diferentes versões do Node.js

Dependências

  • Instalação global do componente PM2 1.x
npm install -g pm2
pm2 -v

Instalação do projeto

git clone https://github.com/mateusmoog/pokemarket
npm install

Inicializando a aplicação

Iniciar a aplicação para PROD

Inicializa o PM2, com a aplicação como serviço, utilizando o máximo de núcleos disponíveis, observando mudanças e atualizando, reiniciando caso ocorram falhas

export NODE_ENV=production
npm start

Parar a aplicação

npm stop

Iniciar a aplicação para DEV

Inicializa o PM2, com a aplicação como serviço, utilizando 1 núcleo, observando mudanças, parando a cada falha e lançando o log após a inicialização

npm run dev

Logs da aplicação

npm run logs

Iniciar os testes

npm test

Rotas

Listar Pokemons

GET http://localhost:1991/pokemons

Response
{
    error: 0,
    pokemons: [
        { 
            uuid: 'abcdef-1nas1-as1rfag',
            name: "Charizard", 
            price: 1000, 
            stock: 9999 
        }
    ]
}

Criar Pokemon

PUT http://localhost:1991/pokemons

Request 
{ name: "Charizard", price: 1000, stock: 9999 }


Response
{
    error: 0,
    pokemon: { 
        uuid: 'abcdef-1nas1-as1rfag', 
        name: "Charizard", 
        price: 1000, 
        stock: 9999 
    }
}

Comprar Pokemon

POST http://localhost:1991/pokemons/buy

Request
{ uuid: 'abcdef-1nas1-as1rfag', quantity: 1 }

Response
{
    error: 0,
    transactionStatus: 'paid'
}

Implementações futuras

- Filtrar, deletar, e possibilitar a compra de vários pokemons
- Middleware de autenticação com passport e jwt
- Middleware de autorização (admin e cliente)
- Documentação com JSDocs

About

Teste da Pagarme


Languages

Language:JavaScript 100.0%