Skip to content

POC para o gerenciamento em Lote de rápida recuperação de Notícias através do ElasticSearch. Desenvolvido com Docker, Laravel, PostgreSQL.

Notifications You must be signed in to change notification settings

angelorpt/noticias-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto Comunicação de Notícias

Com este projeto tenho por objetivo me aperfeiçoar como desenvolvedor.

A problemática:

Dado um arquivo noticias.json tenho por objetivo fazer com que minha API Laravel recebe este conjunto de notícias e os salve diretamente no Banco de Dados PostgreSQL. De forma síncrona, por enquanto, que ele seja salvo no Elasticsearch para consulta posterior. Ao abrir o FrontEnd escrito em Vuejs, juntamente com o Quasar Framework, que ele faça uma requisição à API do Laravel e que este por sua vez, não consulte o Banco de Dados do Postgre e sim os diretamente os documentos salvos no Elasticsearch, exindo na tela em formato de lista e detalhes.


Arquitetura

Atualmente estou com esta arquitetura:

arquitetura atual


E o objetivo é fazer com que os serviços se comuniquem através do RabbitMQ:

arquitetura futura


Instalação

Caso deseje configurar e testar siga os passos abaixo:

Pre-requisitos

Na sua máquina, instale:

  • Docker
  • Node
  • Yarn

Permissão de escrita no Volume do Docker

  1. [No linux] Após o clonar o projeto, criar o diretório .docker e conceder permissão de escrita

    mkdir .docker
    sudo chmod -R 777 .docker/

Configurando o FrontEnd

  1. Acesse o diretório quasar. No terminal utilize o comando:

    yarn

Subindo o Docker

  1. No diretório principal do projeto

    docker-compose up -d --build

Configurando a API - Laravel

  1. Tendo subido os containers do Docker, acesse o projeto da API através do container.

    docker exec -it app bash
  2. Cria o arquivo de configuração de ambiente com base no exemplo

    cp .env.example .env
  3. Instala as dependências do framework

    composer install
  4. Cria uma key única para a API do Laravel

    php artisan key:generate
  5. Cria todas as tabelas no Banco de Dados do Postgree

    php artisan migrate
  6. Atualizar permissões de diretório

    chmod -R 777 storage/
    chmod -R 777 bootstrap/cache/
  7. [Opcional] Caso deseje visualizar a documentação da API.

    php artisan scribe:generate
    • Você importar para Postman ou Insomnia, gerando automaticamente todas as requisições de cada rota da API. Fique atento(a) para a variável de ambiente apontando para a localhost. Precisa configurar para localhost:8080

      .\api\public\docs\collection.json
      
    • Visualizar Documentação da API em uma página da web

      .\api\public\docs\index.html
      

Serviços e Portas

Serviço Porta
Laravel http://localhost:8100/
Laravel API http://localhost:8100/api
Elasticsearch http://localhost:9200/
Quasar (Front) http://localhost:8080/

Utilizando o Projetos

  1. Para salvar a lista de noticias envie o arquivo para a rota abaixo com o verbo POST:

    POST
    http://localhost:8100/api/noticias/lote
    

    É possível enviar um arquivo selecionado a opção File

    insomnia_post

  2. Em seguida é possível visualizar o resultado abrindo em seu navegador:

    http://localhost:8080/
    

    front_noticias

    front_noticias_detalhes

Encerrando o projeto

  1. No terminal, no diretório principal do projeto
docker-compose down -f

About

POC para o gerenciamento em Lote de rápida recuperação de Notícias através do ElasticSearch. Desenvolvido com Docker, Laravel, PostgreSQL.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published