Skip to content

luizdevfelipe/marketplace

Repository files navigation

MarketPlace

Um site onde um usuário pode se cadastrar e comprar ou vender produtos 💳

Aqui é possível cadastrar um novo produto, adicioná-lo ao carrinho e finalizar a compra via Mercado Pago


Tecnologias: 📑 Laravel 📑 Docker 📑 WSL2 📑 CRON 📑 Vite 📑 Bootstrap 📑 Mercado Pago

Motivação:

▫️ Projeto realizado com a finalidade de aprender a estruturar projetos com Laravel

▫️ Utilizar o conceito de container disponível através do Laravel Sail

▫️ E subsistemas Linux no Windows


Teste na sua máquina:

Faça download do Docker 🐋, pois é ele o responsável por rodar toda a aplicação em um Container.

Faça download do WSL2, porque o projeto será armazenado neste Subsistema Linux.

Instale também esse respositório, através do botão Download Zip ou clonando na sua máquina. A pasta do projeto deve ficar dentro do subsistema, para que o projeto rode com maior eficiência através do Docker, o diretório será algo semelhante a este: \\wsl.localhost\Ubuntu\home\your_user\marketplace

Renomeie o arquivo .env.example para .env e certifique-se que as portas definidas no arquivo não estão sendo usadas pelo seu computador, caso contrário edite-o alterando as portas conforme necessidade. Também é necessário definir uma senha para o banco de dados no parâmetro DB_PASSWORD

Para que o container seja criado, antes, é necessário, baixar as dependências que não são enviadas para o GitHub com um container temporário através de um terminal WSL rodando no diretório da pasta luizdevfelipe@PC:~/marketplace$, digitando o comando:

docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v "$(pwd):/var/www/html" \
    -w /var/www/html \
    laravelsail/php83-composer:latest \
    composer install --ignore-platform-reqs

Ainda no terminal WSL é preciso iniciar o container da aplicação para que seja possível configurá-la e utilizá-la futuramente, basta digitar:

./vendor/bin/sail up -d

Com o container da aplicação inicializado é necessário gerar uma chave de criptografia, que será exclusiva e utilizada para criptografar dados como valores de sessões, isso pode ser feito através do comando:

./vendor/bin/sail php artisan key:generate

Ao usar o comando Sail Up que é responsável por criar um container Docker da aplicação através do serviço Sail implementado pelo Laravel talvez as migrações do banco de dados ocorram imediatamente, entretanto é frequente a necessidade de migrar o banco manualmente. Caso necessário, basta executar o comando abaixo, que também pode ser executado em caso de dúvidas sem problemas:

./vendor/bin/sail artisan migrate

Agora, já com a estrutura da aplicação pronta é necessário criar um vínculo da pasta que armazena os arquivos enviados por usuários, majoritariamente imagens, com o sistema em geral para que esses possam ser carregados. Isso é feito através de um comando no container da aplicação executado pelo Sail:

./vendor/bin/sail artisan storage:link

Para finalizar, dois comandos precisam ser executados, um para instalar os pacotes provenientes do npm e outro para processar os arquivos estáticos da aplicação utilizando o asset bundle Vite:

./vendor/bin/sail npm install
./vendor/bin/sail npm run build

10º Tudo Certo! Basta acessar http://localhost:8001/ para que você possa visualizar o projeto em funcionamento. Dica: Ao se cadastrar, é necessário confirmar o e-mail, no caso dessa aplicação temos que acessar http://localhost:8025/ pois é onde o serviço de email está hospedado

Em casos de erro 500: Esse erro está muito relacionado ao arquivo mysql.sock.lock presente dentro do volume marketplace_sail-mysql que pode ser visto no aplicativo do Docker. Para solucionar o problema basta apagar esse arquivo e reiniciar o container para que um novo arquivo seja criado de maneira adequada. Em casos de dúvidas basta trocar o parâmetro APP_DEBUG=true para que mensagens de erros sejam exibidas.

  • Laravel Schedule e API do Mercado Pago
    • Para que a integração com API do mercado pago funcione é necessário preencher a chave MERCADO_PAGO_TOKEN= do arquivo .env com uma chave válida criada no site Mercado Pago Developers seguindo os passos descritos após criar uma conta.
    • Nessa aplicação existem algumas tarefas agendadas através de comandos Artisan que são executados periodicamente pelo serviço Schedule do Laravel, como esse serviço é baseado em CRON, sendo necessário adicionar o comando abaixo dentro do arquivo crontab do seu WSL2 através de:
      •   crontab -e
      •   * * * * * cd /home/<user>/marketplace && ./vendor/bin/sail artisan schedule:run >> /dev/null 2>&1

About

Simulação de um MarketPlace com PHP

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published