Sobre • Funcionalidades • Layout • Como executar • Tecnologias • Contribuidores • Autor • Licença
Seletivo Promobit - Primeira fase do pocesso vaga Pessoa Desenvolvedora Backend Junior (Vaga Remota)
Orientações:
- Páginas de listagem/cadastro/edição/delete de
Produtos, as páginas devem ter navegação entre elas. - Páginas de listagem/cadastro/edição/delete de
Tags, as páginas devem ter navegação entre elas. - Relatório de relevância de produtos.
- Poderá ser vinculadas uma ou mais
Tagspela tela de cadastro ou edição deProdutos. - SQL com listagem de
Tagsmais um sumarizador deProdutosatrelado a cadaTag;
-
Usuário pode executar cadastro e autenticação na aplicação.
-
Produtos podem ser verificados em tela de exposição.
-
Produtos podem ser cadastrados, editados e deletados.
-
Tags podem ser cadastradas, editados e deletados.
-
Tags podem ser atribuidas a Produtos em tela de produtos.
-
Relatório de produtos cadastrados
-
Observações sobre avaliação:
- Bônus: Criado ambiente Docker. Autenticação de usuário.
A aplicação possui layout baseado na biblioteca adminLte3.
Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas, ou docker: Git, PHP, Composer, NodeJs, Mysql, PhpMyAdmim, Docker, Docker-compose. Sugestão de Editor: VSCode,
email usuário: promobit@promobit.com senha: promobit
# Clone este repositório
$ git clone git@github.com:aldebalima/teste_cadastro_produto.git
# Acesse a pasta do projeto no terminal/cmd
$ cd teste_cadastro_produto/promobit
# Modificar o .env.example
$ cp .env.example .env
# Altere os dados da conexão do banco de dados.(Não esqueça de criar o banco de dados em questão no Mysql através do PhpMyAdmin)
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=promobit_products
DB_USERNAME=root
DB_PASSWORD=promobit
# Criação do banco de dados e suas permissões ex:
CREATE DATABASE IF NOT EXISTS promobit_products COLLATE 'utf8_general_ci' ;
GRANT ALL ON promobi_products.* TO 'root'@'%' IDENTIFIED BY 'promobit';
FLUSH PRIVILEGES ;
# Instale os pacotes com o composer
$ composer install
# Gere a chave da aplicação
$ php artisan key:generate
# Crie o link para as imagens e uploads
$ php artisan storage:link
# Rode as migrations e seeds
$ php artisan migrate:fresh --seed
# Crie os diretórios com imagens de produtos já cadastrados
$ mkdir storage/app/public/logos
$ mkdir storage/app/public/products
$ mkdir storage/app/public/tags
# Copie as imagens para as pastas
$ cp img/logos/* storage/app/public/logos
$ cp img/products/* storage/app/public/products
$ cp img/tags/* storage/app/public/tags
# Rode o servidor em porta de sua preferência
$ php artisan serve --port=9000
# A aplicação estará rodando em acesse http://localhost:9000 # Clone este repositório
$ git clone git@github.com:aldebalima/test_cadastro_produto.git
# Acesse a pasta do projeto no seu terminal/cmd
$ cd test_cadastro_produto/promobit
# Permissão para o pacote
$ sudo chown -R $USER:$USER *
# Modificar o .env.example
$ cp .env.example .env
# Altere os dados da conexão do banco de dados.(Não esqueça de criar o banco de dados em questão no Mysql através do PhpMyAdmin)
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=promobit_products
DB_USERNAME=root
DB_PASSWORD=promobit
# Instalando
$ docker-compose build
# Subindo container
$ docker-compose up -d
# Verifique se o container subiu corretamente
$ docker ps
# Acesse o container db
$ docker-compose exec db bash
# Acesse o bando de dados, a senha é promobit
$ mysql -u root -p
# Verifique se o banco de dados foi criado corretamente.
$ show databases;
# Execute no banco de dados Mysql
CREATE DATABASE IF NOT EXISTS promobit_products COLLATE 'utf8_general_ci' ;
GRANT ALL ON promobi_products.* TO 'root'@'%' IDENTIFIED BY 'promobit';
FLUSH PRIVILEGES ;
# Instale os pacotes com o composer
$ composer install
# Gerando chave de aplicação
$ docker-compose exec app php artisan key:generate
# Acesse o container app
$ docker-compose exec app bash
# Rode as migrations
$ php artisan migrate:fresh --seed
# Crie link simbólico do storage.
$ php artisan storage:link
# Saia do container
$ exit
# Crie os diretórios com imagens de produtos já cadastrados
$ mkdir storage/app/public/logos/
$ mkdir storage/app/public/products/
$ mkdir storage/app/public/tags/
# Copie as imagens para as pastas
$ cp img/logos/* storage/app/public/logos/
$ cp img/products/* storage/app/public/products/
$ cp img/tags/* storage/app/public/tags/
# Aplicação estará rodando em http://localhost/SELECT products.name, products.id, products.detail,products.image, COUNT(DISTINCT(tags.id)) AS total_tags, GROUP_CONCAT(tags.name) AS todos_as_tags FROM tag_product JOIN tags ON(tags.id = tag_product.tag_id) RIGHT JOIN products ON(products.id = tag_product.product_id) GROUP BY (products.id) ORDER BY total_tags DESC
--
Gratidão a comunidade php-laravel pelas bilbiotecas
Aldebarã Franciso Ferreira de Lima
Este projeto esta sobe a licença MIT.
Feito por Aldebarã Lima 👋🏽 Entre em contato!