elisonsilva / desafio-disys-restfull

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Desafio Técnico

Indice: Rodando projeto | Checar e-mails | Teste externos do endpoint

Instruções para entrega:

  • Versione, com git, e hóspede seu código em algum serviço de sua preferência: github, bitbucket, gitlab ou outro.
  • Crie um README com instruções claras sobre como executar sua obra.
  • Envie um e-mail com o link do repositório

Sobre o projeto

A API Restful deve contemplar os módulos Cliente, Produto e Pedido, sendo que cada um deverá conter endpoints CRUDL.


As tabelas devem conter as seguintes informações:

  • ✔ Clientes: nome, e-mail, telefone, data de nascimento, endereço, complemento, bairro, cep, data de cadastro; @done
  • ✔ Produtos: nome, preço, foto; @done
  • ✔ Pedidos: código do cliente, código do produto, data da criação; @done

Requisitos:

  • ✔ Não devem existir dois clientes com o mesmo e-mail. @done
  • ✔ O produto deve possuir foto. @done
  • ✔ Os dados devem ser validados. @done
  • ✔ O sistema deve conter uma série de tipos de produtos já definidos. @done
  • ✔ O pedido deve contemplar N produtos. @done
  • ✔ O cliente pode contemplar N pedidos. @done
  • ✔ Após a criação do pedido o sistema deve disparar um e-mail para o cliente contendo os detalhes do seu pedido. @done
  • ✔ Os registros devem conter a funcionalidade de soft deleting. @done
  • ✔ Padronização PSR @done
  • ✔ Nomenclatura de classes, métodos e rotas no padrão americano. @done

Requisitos adicionais:

  • ✔ Testes unitários. @done
  • ✔ Dockerizar a aplicação @done

Critérios de avaliação:

  • Profundidade do conhecimento e utilização das funcionalidades do framework.
  • Organização do código.
  • Padronização PSR
  • Fidelidade aos requisitos solicitados.

Utilizaando

  • Laravel 10
  • Docker
  • MailHog
  • Mysql
  • Redis

Passo a passo

Clone Repositório

git clone git@github.com:elisonsilva/desafio-disys-restfull.git desafio-disys-restfull
cd desafio-disys-restfull

Crie o Arquivo .env

cp .env.example .env

Atualize as variáveis de ambiente do arquivo .env se ncessario

Utilizando Makefile

Obsevação: O desafio foi desenvolvido no Windows 11 com WSL2 (Ubuntu 20.04), Docker e Docker Composer instalado dentro do mesmo, com isso a chamada 'docker-compose' muda para 'docker compose' (espaços). Você pode alterar a chamada diretamente arquivo Makefile, em DOCKER_COMPOSE ou DOCKER_EXEC

Rode o comando abaixo para:

  1. Subir o Containers
  2. *Acessa o Container de App
  3. Instala as dependencias (Composer install)
  4. Configurações do Laravel
  5. Importa as Migrations
  6. Popula o banco (Seeders)
  7. Roda os testes (PHPUnit)
# Todas as configuração
make run

Rodar apenas os testes

make test

Acesse os endoints via Postman ou Insominia

http://localhost:8989/api/v1

Acessar o container com o Laravel

make test

Utilizando Docker Composer

Observação: O desafio foi desenvolvido no Windows 11 com WSL2 (Ubuntu 20.04), Docker e Docker Composer instalado dentro do mesmo, com isso a chamada 'docker-compose' muda para 'docker compose' (espaços).

Suba os containers do projeto

docker compose up -d

Acesse o container app

docker compose exec app bash

Instale as dependências do projeto

composer install

Gere a key do projeto Laravel

php artisan key:generate

Acesse os endoints via Postman ou Insominia

http://localhost:8989/api/v1

Validar envido e-mails locais

Foi utilizado MailHog para testar o envio e recebimento de e-mails local, o link para visualizá-los é http://localhost:8025

Testes endpoints

VsCode REST Client

Instale a extensão REST Client no VsCode, para testar os arquivos abaixo:

Postman

Utilizando Postman, com o abaixo link você pode criar um fork ou rodar diretamente as coleções, environments e os testes de endpoints no programa. Run Collections;

Link coleção: https://documenter.getpostman.com/view/4246747/2s9YRB3XnS

Arquivos para importar

About


Languages

Language:PHP 78.3%Language:Blade 20.4%Language:Dockerfile 0.7%Language:Makefile 0.4%Language:JavaScript 0.2%