Skip to content

mnborges/fitness-foods-api

Repository files navigation

Fitness Foods API

REST API para fácil acesso às informações nutricionais dos mais diversos produtos!


Sobre o projeto

Desenvolvido para solução do desafio PHP Challenge 20200916 da Coodesh, que estabelece que o objetivo da API é auxiliar nutricionistas da empresa Fitness Foods LC através do acesso aos dados do projeto Open Food Facts, além de outras regras e orientações.

Sobre a API

A informação detalhada sobre a API está presente no aquivo openapi.json. Segue abaixo um pequeno resumo das endpoints:

  • /
    • GET : Retorna detalhes sobre o estado atual da API
  • /products
    • GET : Retorna lista paginada dos produtos disponíveis na base de dados
  • /products/{code}
    • GET : Retorna informações de um produto especificado por seu código
    • PUT : Atualiza informações do produto especificado por seu código
    • DELETE : Atualiza o status do produto colocando-o na lixeira.

Stack

Pré-requisitos

Apenas Docker Desktop, Git e seus próprios requisitos são necessários para execução desta aplicação.

Execução passo a passo

  1. Clone este repositório e acesse o caminho para o diretório do projeto no terminal

    Exemplo:

    git clone https://github.com/mnborges/fitness-foods-api.git
    cd fitness-foods-api
  2. Copie as variáveis de ambiente declaradas em .env.example para um novo arquivo .env na raiz do projeto, ou apenas renomeie .env.example para .env

    Exemplo:

    cp .env.example .env

    Observe que a variável APP_KEY está indefinida, essa chave será gerada nos próximos passos.

  3. Instale as dependências do projeto utilizando a imagem Docker do gerenciador de dependências Composer

    docker run --rm -u "$(id -u):$(id -g)" -v "$(pwd):/var/www/html" -w /var/www/html laravelsail/php81-composer:latest composer install --ignore-platform-reqs

    Essa etapa pode levar alguns minutos.

  4. Construa e execute o docker container

    ./vendor/bin/sail up

    Caso ache conveniente, é possível configurar um alias para executar os comandos da interface Sail mais facilmente, veja como na documentação do Laravel.

  5. Abra uma nova sessão em seu terminal e execute o seguinte comando para gerar uma chave para a variável de ambiente APP_KEY no arquivo .env

    ./vendor/bin/sail php artisan key:generate
  6. Execute a migração do banco de dados

    ./vendor/bin/sail php artisan migrate
  7. Processe os testes através do comando seguinte para verificar que todos os endpoints estão acessíveis e adequados

    ./vendor/bin/sail php artisan test
  8. Verifique a aplicação em funcionamento no endereço localhost.

    Para interromper a execução do docker container pressione Control+C na sessão de terminal do passo 4, ou utilize o comando seguinte em outra sessão

     ./vendor/bin/sail down

Importação de Dados

Os dados do projeto Open Food Facts devem ser importados diariamente à meia noite, para configurar um horário diferente basta mudar a variável de ambiente CRON_SCHEDULE_HOUR em seu arquivo .env para o horário desejado seguindo o formato HH:MM.

Para executar a importação manualmente execute o seguinte comando:

    ./vendor/bin/sail php artisan import:cron

Para automatizá-la é necessário configurar o servidor para executar o comando scheduler:run do Laravel a cada minuto, conforme indicado pela documentação.

* * * * * cd /path-to-the-project && php artisan schedule:run >> /dev/null 2>&1

Contato

Maieza N. Borges - LinkedIn - maieza.borges@gmail.com

About

REST API for the Open Food Facts project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published