Este projeto foi construído utilizando o framework PHP Laravel, em sua versão 10.x.
- Certifique-se de possuir o Docker e Docker Compose instalados em sua máquina (no projeto foram utilizadas as versões mais recentes, 24.0.6 e 2.23.0, respectivamente)
- Clonar o repositório do Github. (https://github.com/rpmoura/disys-pastelaria)
- Acessar a raíz do projeto (path/to/pastelaria)
- No terminal, executar o seguinte comando:
docker-compose up -d --build- Este comando irá subir todos os containers necessários para a execução aplicação
- Note que os containers
nginxequeuepoderão levar mais tempo até ficarem aptos para uso, pois necessitam que containerapisatisfaça a condição de teste definida no healthcheck - Em sua primeira execução, o container
apiirá instalar todas as dependëncias do projeto (definidas em composer.json), além de realizar a criação das tabelas na base de dados (migrations) e povoar a base (seeder), além de definir e gerar a chave (APP_KEY) do ambiente (.env), logo, a conclusão dessa operação poderá levar alguns minutos.
O container api possui um ponto de entrada (docker-entrypoint.sh) que é chamado através do command, definido no docker-compose.yml.
Este ponto de entrada realiza as seguintes operações (iremos considerar a primeira execução):
- Passo 1: Faz a instalação das dependências do projeto
composer install --optimize-autoloader
Cria o arquivo de controle.composer_installed, para sinalizar que este passo foi concluído. - Passo 2: Faz a migração da base de dados junto com a inserção dos dados iniciais
php artisan migrate --seed
Cria o arquivo de controle.migrations_executed, para sinalizar que este passo foi concluído. - Passo 3: Faz a criação do arquivo de configuração do ambiente(.env) com base no arquivo de exemplo
cp .env.example .env
Gera a chave da aplicaçãophp artisan key:generate
Nas próximas execuções do container, o healthcheck irá verificar a existência dos arquivo de controle, incluindo o .env, para definir o status do container
apie seguir com a disponibilização dos containers que o possuem como dependência.
- Os e-mails enviados poderão ser acessados no container
mailhog, através do link http://localhost:8025
- As rotas disponibilizadas neste projeto estão em uma Postman Collection.
Disponível no arquivo:back-end-challenge-disys.postman_collection.json, na raíz do projeto, sendo possível realizar a importação. - Também é possível consultar através deste link.
- Execução dos testes
docker-exec -it pastelaria-api composer run test
- Geração do relatório de cobertura dos testes
docker-exec -it pastelaria-api composer run coverage
O relatório gerado poderá ser acessado através do navegador em: http://localhost:8099/reports/
- Validação das regras PSR-12
docker-exec -it pastelaria-api composer run format:test
- Formatar código de acordo com as regras PSR-12
docker-exec -it pastelaria-api composer run format
- Possibilidade de trabalhar com DTO, permitindo termos melhor controle dos dados trafegados entre as camadas da aplicação.
- Adicionar filtros nos endpoints de listagem, como, por exemplo, listagem de pedidos de um cliente específico.
- Adicionar autenticação, podendo ser através do Laravel Sanctum ou JWT.
- Manter o histórico de valor do produto, assim como a quantidade, para isso, basicamente, precisaríamos adicionar essas duas colunas na tabela de relacionamento entre pedidos e produtos, com isso, materíamos o valor do produto no momento do pedido, não sofrendo alterações caso o produto seja atualizado.