Technical Challenge - Soft Expert

Instalação

  1. Clone o repositório em sua máquina local
git clone https://github.com/Thauan/technical-challenge-soft-expert.git
  1. Entre na pasta do projeto:
cd technical-challenge-soft-expert
  1. Instale as dependências do PHP:
cd backend
composer install --ignore-platform-reqs
  1. Copie o arquivo .env.example para .env e configure as variáveis de ambiente, como o banco de dados e o S3:
cp .env.example .env
cp .env.example .env.testing

.env

ENVORIMENT=development
DATABASE_NAME=php_mvc
DATABASE_PORT=5632
DATABASE_ENGINE=pgsql
DATABASE_HOST=database
DATABASE_USER=postgres
DATABASE_PASSWORD=root

.env.testing

ENVORIMENT=test
DATABASE_NAME=php_mvc_test
DATABASE_PORT=5632
DATABASE_ENGINE=pgsql
DATABASE_HOST=localhost
DATABASE_USER=postgres
DATABASE_PASSWORD=root
  1. Instale as dependências do NPM:
cd frontend
npm install
  1. Copie o arquivo .env.example para .env e configure as variáveis de ambiente do frontend:
cp .env.example .env
  1. Execute o docker do projeto:
docker compose up --build
  1. Criação do banco de desenvolvimento e teste:
ocker exec -it technical-challenge-soft-expert-database-1 psql -U postgres -c "CREATE DATABASE php_mvc ENCODING 'LATIN1' TEMPLATE template0 LC_COLLATE 'C' LC_CTYPE 'C';"
ocker exec -it technical-challenge-soft-expert-database-1 psql -U postgres -c "CREATE DATABASE php_mvc_test ENCODING 'LATIN1' TEMPLATE template0 LC_COLLATE 'C' LC_CTYPE 'C';"

docker exec -it technical-challenge-soft-expert-database-1 psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE postgres TO postgres;"
  1. Rode as migrations:
vendor/bin/phinx migrate -e development
vendor/bin/phinx migrate -e testing
  1. Para rodar os testes:
composer test

ou

APP_ENV=test ./vendor/bin/phpunit
  1. Acessar os endpoints já deve estar funcionando:

Backend

http://localhost:8080

Frontend

http://localhost:3000

Credenciais para que login que estão no dump-php_mvc-202307101345.sql dentro da pasta backend

{
    "email": "jonhdoe@gmail.com",
    "password": "123456"
}

Funcionalidades

O projeto possui diversas funcionalidades interessantes, incluindo:

  • Login
  • Cadastro
  • Listagem de Produtos
  • Carrinho de Pedidos

Tecnologias

O projeto foi desenvolvido utilizando as seguintes tecnologias:

  • PHP 8.1
  • React
  • Material UI

Contribuição

Contribuições são bem-vindas! Se você encontrar algum bug ou tiver alguma ideia para melhorar o projeto, por favor, abra uma issue ou submeta um pull request.