- Após clonar o repositório em algum diretório em seu computador, abre um terminal e vá até a pasta em que se encontra o repositório.
- Renomei o arquivo .env.example para .env e coloque as váriaveis de ambiente de acordo com sua preferência.
- Execute o comando docker-compose up para montar os containers, rodar as migrations, a seed e a aplicação.
- Caso de algum erro, tente rodar a aplicação localmente, por favor.
Usando localmente
- Após clonar o repositório em algum diretório em seu computador, abre um terminal e vá até a pasta em que se encontra o repositório.
- No terminal rode o comando para instalar as dependencias:
- yarn
- Renomei o arquivo .env.example para .env e coloque as váriaveis de ambiente de acordo com sua preferência.
- Altere o campo "host" no arquivo ormconfig.json para "localhost"
- No terminal rode os comandos:
- Para criar o banco de dados: yarn seed:database
- Para criar as tabelas: yarn migration: run
- Para criar o usuario admin: yarn seed:admin
- Para rodar a aplicação: yarn start:dev ou yarn start
Considerações e Observações
- As rotas relacionadas a Product, Supplier, Stock, Category, Shipment requerem Token de Administrador.
- As rotas que requerem por algum motivo o ID do usuario, pegam o ID do usuario através do Token informado.
- Os dados de administrador podem ser alterados no arquivo e caso queira adicionar mais de um, basta copia a query do INSERT e executar mais uma ou editar a já existente: final-challenge/src/infra/typeorm/seeds/create-admin.ts
- Fiz alguns testes unitários para praticar, basta digitar o comando yarn test para executa-los
- O diagrama e endpoints no Postman se encontram na raiz do projeto.
- É feita uma validação no stock quando é realizada um Order, mas não consegui que o Throw caisse no catch do controller, então por enquanto está quebrando a aplicação.
- Para validar se o usuario está logado, estou verificando além do token ser válido, se é ele que consta na tabela do usuario, para garantir que no signout, seja esquecido o token removido.
Realizações futuras
- Pretendo ampliar o test coverage e incluir testes de integração.
- A algumas validações/implementações que gostaria de acrescentar, como: Remover do stock a quantidade requisitada na order, uma opção para resetar a senha, implementação de Redis para armazenar os Tokens com um blacklist para o que ainda estão válidos pelo JWT, mas não são mais autorizados a utilizar.