/products-analyzer

Organized and disorganized products identifier

Primary LanguageJavaScript

GitHub language count Repository size GitHub last commit

Identificador de produtos organizados e desorganizados

Tópicos

🛠️ Tecnologias

  • Node.js - para a criação do servidor (API Restul).
  • ReactJS - para a criação da aplicação web.
  • React Native - para a criação da aplicação mobile.
  • Expo - plataforma para ajudar na criação da aplicação mobile.
  • IBM Watson Visual Recognition - inteligência artificial de reconhecimento visual da IBM, para ajudar a detecção de produtos organizados e desorganizados.

📂 Algumas biblíotecas/módulos utilizados

🚪 Backend

  • express - para criação do servidor (middleware).
  • ibm-watson - para usarmos o watson na aplicação.
  • MongoDB (mongoose) - banco de dados na Núvem.
  • cors - para permitir que a API seja acessada pela aplicação web e mobile.
  • multer - para salvar as imagens que foram enviadas pela câmera.
  • socket.io - permite comunicação baseada em eventos bidirecionais em tempo real.

🌐 Web

  • react-router-dom - para criação rotas.
  • React Icons - para adicionar ícones relacionado com o status de cada imagem do produto (organizado, desorganizado).
  • axios - para fazer requisições HTTP para a API.
  • socket.io-client - framework para comunicação em tempo real do lado cliente.
  • filesize - para medir o tamanho de cada imagem que for enviada pela câmera.

📱 Mobile

💻 Sobre a aplicação

O Products Analyzer é uma aplicação web e mobile que identifica produtos organizados e desorganizados em "prateleiras e freezers de supermercado com uma câmera apontada para eles", usando IBM Watson Visual Recognition, para reconhecimento visual dos produtos.

🚪 Backend

O servidor é uma API Restful; ele é coração das aplicações web e mobile (câmera).

🌐 Web

A aplicação web é para monitorar os produtos que são detectados pela câmera com a ajuda da inteligência artificial de reconhecimento visual.

📱 Mobile

A aplicação mobile é a simulação da câmera que ficaria fixada na frente dos produtos nos supermercados, é a partir dessa aplicação que é tirada uma foto do produto e enviada para aplicação web em tempo real.

🚀 Rodando a aplicação

⚠️ Requisitos

🧭 Clonando, instalando e algumas configurações

  1. Primeiro, clone o repositório rodando git clone https://github.com/ribeiromatheus/products-analyzer.git no seu terminal favorito.
  2. Depois de clonar, rode npm install ou yarn na pasta backend, frontend e products-analyzer.
  3. Vá para a pasta backend e crie uma pasta chamada tmp e dentro dela uma chamda uploads.
  4. Vá para a pasta products-analyzer, crie uma pasta dentro de src chamada credentials depois crie um arquivo json chamado baseUrl para que você possa adicionar seu ip seguido da porta do servidor (3333).
{
    "ip": "http://<ip goes here>:3333"
}

🧭 Criando uma instância do Watson Studio na IBM CLOUD

🧭 Últimas configurações

  1. Agora vá para a pasta backend e renomeie o arquivo sample.env para .env e insira sua credenciais.
  2. Execute o comando npm run dev ou yarn dev para rodar o servidor (certifique-se de que você está na pasta backend).
  3. Execute o comando npm start ou yarn start para roda a aplicação web (certifique-se de que você está na pasta frontend).
  4. Run npm start or yarn start para roda a aplicação mobile app (certifique-se de que você está na pasta products-analyzer).

🔆 Apresentação da aplicação

💾 Vídeo

Você pode conferir o vídeo da aplicação aqui.

📄 Documentação

Você pode ler a documentção do projeto aqui.