Skip to content

brenio55/ecommerce_test

Repository files navigation

E-commerce Simples Laravel

Desenvolvedor: Brenio Filho.

Aplicação teste de e-commerce desenvolvida com Laravel e Supabase.

Tecnologias Utilizadas

  • Laravel (Framework PHP)
  • Prettier (Formatação e qualidade de código)
  • PostgreeSQL (Banco de dados)

Requisitos do Sistema (Sem Docker)

  • PHP 8.1 ou superior
  • Composer
  • XAMPP, WAMP, MAMP ou servidor web similar
  • Docker (opcional para facilitação de execução)

Advise

  • Utilizei para fazer o banco de dados do projeto o Supabase, mas às vezes ele dá um bug de timeout e/ou com o Docker ele fica com problemas para aceitar conexões IPv4, que é o padrão do Docker, então tive que fazer um workaround para que funcionasse. Caso não funcione com o Docker, tente a instalação local, e caso o Supabase dê timeout, tente novamente que a requisição deve funcionar normal -- corrigiria isto com mais tempo, encontrei este bug no meio do projeto.

Instalação Local (Sem Docker)

  1. Clone o repositório e acesse a pasta do projeto:
cd ecommerceApp
  1. Instale o PHP, o Composer e suas dependências:
  • Vai ser necessário que você instale o PHP, adicione eles às suas variáveis de ambiente, e logo em seguida instale o Composer. Após isto, rode este comando dentro da pasta do projeto:
composer install
  1. Adicione o arquivo ENV:
cat .env
  1. Configure seu banco de dados no arquivo .env:
DB_CONNECTION=pgsql
DB_HOST=conexao.com
DB_PORT=5432
DB_DATABASE=postgres
DB_USERNAME=postgres
DB_PASSWORD="senhaDoBanco"
DB_CONNECTION_TIMEOUT=300
  • Estas informações devem estar disponíveis no e-mail que enviei sobre o projeto.
  1. Execute as migrações do banco de dados (a ser implementado):
php artisan migrate 
php artisan db:seed
  1. Configure seu PHP.ini para ter acesso ao pdo_pgsql e pgsql
  • Estas são configurações para liberar os drivers de acesso do PHP ao tipo de banco de dados Postgree, que geralmente veêm desabilitadas por padrão.

Você precisa entrar no arquivo php.ini e descomentar (tirar o ";") da frente, onde deverá parecer desta forma após a edição:

    extension=pdo_pgsql
    extension=pdo_sqlite
    extension=pgsql
  1. Inicie o servidor e começe a fazer as requisições com:
php artisan serve 

Os endpoints estarão disponíveis em http://localhost:8000 Informações sobre como fazer as requisições estão disponíveis em DOCS.md no diretório raiz deste projeto.

Instalação com Docker

  1. Instale o Docker no seu computador

  2. Adicione estas configurações no seu Docker Engine ou nas configurações JSON do seu Docker Daemon:

Devido a limitações do banco de dados Supabase de receber requisições em IPv4, teremos que habilitar o Docker para trabalhar apenas com IPv6, o procedimento para este é o abaixo:

No windows:
    1: Habilitar IPv6 no Docker Desktop

    2. Abra o Docker Desktop.

    3. Clique no ícone de engrenagem (Settings) no canto superior direito.
    4. No menu lateral, vá para a seção Docker Engine.
    
    Você verá uma tela de edição de texto para o arquivo de configuração. Por favor, adicione as seguintes linhas dentro das chaves 

    {    
        "ipv6": true,
        "fixed-cidr-v6": "2001:db8:1::/64"
    }

    5. Clique no botão "Apply & Restart". O Docker irá reiniciar para aplicar as novas configurações.

    Importante: Se já houver algum texto lá, apenas adicione as novas linhas, separando-as com uma vírgula. O JSON deve ficar parecido com isto caso exista algum texto lá:

    {
      "builder": {
        "gc": {
          "enabled": true,
          "defaultKeepStorage": "20GB"
        }
      },
      "experimental": false,
      "ipv6": true,
      "fixed-cidr-v6": "2001:db8:1::/64"
    }

    ----------------------------------------------------------

No Linux:

    1. Edite o arquivo de configuração do daemon do Docker, localizado em: 
        /etc/docker/daemon.json

    2. Configure os seguintes parâmetros:
        {
            "ipv6": true,
            "fixed-cidr-v6": "2001:db8:1::/64"
        }

    3. Salve o arquivo de configuração.
        Para que as alterações tenham efeito, reinicie o serviço do Docker com o seguinte comando:
        
        sudo systemctl restart docker
    
  1. Após habilitar o IPv6 no Docker, inicie o Docker Engine e execute na raiz do projeto, onde existem os arquivos do Docker, os comandos abaixo:
    docker-compose up
  1. O endpoint estará ouvindo requisições corretamente em http://localhost:8000

Obs: As migrações não necessárias com Docker por enquanto, porque o banco de dados já está criado e populado. Temporariamente tive que não implementar isso dentro do YML devido a limitações do Supabase. Caso queira, podes executar as migrações fora do Docker com os comandos do php artisan migrate && php artisan db:seed

Comandos Úteis em outros casos

Comandos Docker

# Iniciar containers
docker-compose up

# Parar containers
docker-compose down \ CTRL + C

# Refazer todos os containers e volumes
docker system prune -a
docker volume prune -a
docker-compose up

Estrutura de Diretórios

  • routes/ - Rotas da aplicação
  • app/ - Código principal da aplicação Laravel
  • config/ - Configurações
  • database/ - Migrações e seeders
  • public/ - Arquivos públicos
  • resources/ - Views e assets
  • storage/ - Arquivos de upload e logs
  • tests/ - Testes automatizados
  • vendor/ - Dependências PHP (Composer)

Documentação de Rotas / Endpoints

  • A documentação das rotas e endpoints está disponível no arquivo DOCS.md, na raiz deste projeto.

Informações Adicionais

Este é apenas um repositório teste sem fins de utilização para produção.

About

test made to interview with laravel and php

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors