O projeto Receitas foi desenvolvido por Lucas Cortês Alves Soares como trabalho da disciplina de Boas Práticas de Programação.
Ferramenta | Versão |
---|---|
PHP | 8.2.* |
Laravel | 11.0 |
MySql | 8.0 |
Redis | alpine |
8.2-fpm-alpine | 3.12 |
mailhog/mailhog | latest |
minio/minio | latest |
A arquitetura MVC tem como principal característica ajudar a desenvolver aplicações seguras e performáticas de forma rápida, com código limpo e simples, já que ele incentiva o uso de boas práticas de programação e utiliza o padrão PSR-2 como guia para estilo de escrita do código.
O padrão de projeto Service (ou Service Layer) é amplamente utilizado para encapsular a lógica de negócios de uma aplicação. Ele ajuda a organizar e estruturar o código, separando as responsabilidades e promovendo a reutilização. Esse padrão é especialmente útil em aplicações onde a lógica de negócios pode ser complexa ou usada em diferentes partes do sistema.
No padrão Repository, você cria classes que atuam como intermediárias entre os modelos (ou qualquer fonte de dados) e o restante da aplicação. O objetivo é encapsular a lógica de acesso aos dados em um único local, tornando o código mais modular, reutilizável e fácil de manter.
O SOLID é um princípio de design de software orientado a objeto (OOD). Basicamente, SOLID é um acrônimo para:
S - Single Responsibility Principle (Princípio da Responsabilidade Única);
O - Open-closed Principle (Princípio Aberto-fechado);
L - Liskov Substitution Principle (Princípio da Substituição de Liskov);
I - Interface Segregation Principle (Princípio da Segregação de Interface);
D - Dependency Inversion Principle (Princípio da Inversão de Dependência).
Certifique-se de checar se as configurações dos containes estão de acordo com as do .env
.
Container de bancos de dados da aplicação local, criada com base no mysql:8.0
.
Container de cache utilizado pelo horizon e filas, criada com base na redis:alpine
.
MailHog é uma ferramenta de teste de e-mail para desenvolvedores, localmente é usada para o envio de emails. A imagem é criada com base na mailhog/mailhog:latest
.
Para acessar o mailhog, e ter acesso aos e-mails enviados, acesse http://localhost:8025.
MinIO é um armazenamento de objetos de alto desempenho lançado sob a GNU Affero General Public License v3.0. É API compatível com o serviço de armazenamento em nuvem Amazon S3, localmente usa-se para o armazenamento de objetos que em produção são armazenadas na AWS S3
. A imagem é criada com base na minio/minio:latest
.
Para configurar o MinIO, acesse a url http://localhost:9090, insira as credenciais que estão configuradas no .env (AWS_ACCESS_KEY_ID
e AWS_SECRET_ACCESS_KEY
), e crie um novo bucket, que deve ser o mesmo na configuração AWS_BUCKET
do .env
.
1 - Clone o repositório git@github.com:lucascasoares/receitas.git
.
2 - Acesse a pasta do projeto cd receitas
.
3 - Crie o .env cp .env.example .env
.
1 - Execute docker-compose up -d
para subir os containers.
2 - Execute docker exec -it receitas-php-fpm /bin/bash
para acessar o container do php.
3 - Dentro do container execute composer install
ou composer install --ignore-platform-reqs
para instalar as dependências.
4 - Em seguida npm install
e npm run prod
para instalar as dependências.
5 - Gerar a APP_KEY php artisan key:generate
.
6 - Dentro do container execute php artisan migrate --seed
para executar as migrations e os seeds.
7 - Dentro do container execute php artisan passport:install
para criar as keys de autenticação.
8 - Para abrir o app acesse o link http://localhost. Para verificar as credenciais padrão, acesse o arquivo de seeds users.
1 - Crie o banco de dados de testes no mysql.
2 - Crie o .env.testing.
cp .env .env.testing
3 - Altere as variáveis de conexão do banco de dados para o que você acabou de criar.
4 - Execute as migrations e seeds.
php artisan migrate --env=testing --seed
5 - Execute os testes.
-
Todos;
./vendor/bin/phpunit
-
Somente uma classe;
./vendor/bin/phpunit --filter ClassName
-
Somente um método;
./vendor/bin/phpunit --filter methodName