Skip to content

aldebalima/teste_cadastro_produto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 

Repository files navigation

🚧 Prcesso Seletivo - Promobit 🚧

SobreFuncionalidadesLayoutComo executarTecnologiasContribuidoresAutorLicença

💻 Sobre o projeto

Seletivo Promobit - Primeira fase do pocesso vaga Pessoa Desenvolvedora Backend Junior (Vaga Remota)


Orientações:

  1. Páginas de listagem/cadastro/edição/delete de Produtos, as páginas devem ter navegação entre elas.
  2. Páginas de listagem/cadastro/edição/delete de Tags, as páginas devem ter navegação entre elas.
  3. Relatório de relevância de produtos.
  4. Poderá ser vinculadas uma ou mais Tags pela tela de cadastro ou edição de Produtos.
  5. SQL com listagem de Tags mais um sumarizador de Produtos atrelado a cada Tag;

⚙️ Funcionalidades dessa Sistema

  • 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.

🎨 Layout

A aplicação possui layout baseado na biblioteca adminLte3.


🚀 Como executar o projeto

Pré-requisitos

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,

Dados de uso da aplicação:

email usuário: promobit@promobit.com senha: promobit

🎲 Rodando o (servidor) com php @todo

# 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 

🧭 Rodando o (servidor) com docker-compose

# 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/

SQL - RELATÓRIOS:

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

--

👨‍💻 Contribuidores

Gratidão a comunidade php-laravel pelas bilbiotecas

🦸 Autor


Aldebarã Franciso Ferreira de Lima

Linkedin Badge Gmail Badge


📝 Licença

Este projeto esta sobe a licença MIT.

Feito por Aldebarã Lima 👋🏽 Entre em contato!


Versões do README

Português 🇧🇷

About

Processo Seletivo

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages