Skip to content

Um serviço que gerencia medição e leitura individualizada de consumo de água e gás usando a Gemini AI

Notifications You must be signed in to change notification settings

evans-costa/ConsumeterAI

Repository files navigation


Leitor de Consumo AI

Um serviço que gerencia medição e leitura individualizada de consumo de água e gás, feito com Typescript e Node.js, usando o Google Gemini AI

Typescript NodeJS Fastify Gemini Postgres Docker Zod Swagger

Recursos principaisComo usarMelhoriasCréditosTODO

Recursos principais

  • Faça o upload de uma imagem de um medidor de gás ou água
  • A IA irá ler a imagem e obter a medição, retornando o valor
  • A aplicação irá pedir a confirmação o valor dessa medição
  • Salva no banco de dados os dados da medição, com o seu tipo (água ou gás)
  • Lista todas as medições pelo código do consumidor

Como usar

Para clonar essa aplicação, você precisará ter instalado na sua máquina o Node.js (que vem com o npm) e o Docker com Docker Compose.

  • Da sua linha de comando:

    # Clone este repositório
    $ git clone https://github.com/evans-costa/teste-dev-shopper.git
    
    # Vá para a pasta do repositório
    $ cd teste-dev-shopper
  • Renomeie o arquivo .env.example para .env e preencha com a API KEY do Gemini

    NODE_ENV=development
    
    POSTGRES_PORT=5432
    POSTGRES_USER=local_user
    POSTGRES_DB=local_db
    POSTGRES_PASSWORD=local_password
    
    DATABASE_URL=postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@localhost:$POSTGRES_PORT/$POSTGRES_DB
    
    GEMINI_API_KEY=<YOUR-GEMINI-API-KEY>

    📌 Nota:
    Para gerar uma chave de API do Google Gemini, por favor, siga as instruções contidas nesse link.

Ambiente local

Para rodar essa aplicação localmente, siga essas instruções:

  • Instale as dependências:

    # Instale as dependências
    $ npm install
  • Rode o seguinte comando:

    # Suba os serviços e o servidor
    $ npm run dev:local

    Isto irá subir o contêiner com o banco de dados, rodar as migrações, fazer o seed de um usuário na tabela customers e subir o servidor no endereço http://localhost:3000

Ambiente conteinerizado

  • Alternativamente, você pode subir todos os serviços, tanto a aplicação Node e os serviços do banco de dados, em uma rede de contêineres Docker

  • Rode o seguinte comando:

    # Suba os serviços e o servidor
    $ npm run services:up

    Isso irá subir o contêiner do PostgreSQL, o contêiner do Node e estabelecer a conexão entre eles, assim como instalar as dependências, rodar as migrações e fazer o seed de um usuário na tabela customers, além de rodar o servidor no endereço http://localhost:3000

Testando a API

  • Você agora pode testar a API da seguinte maneira:
    • Use o customer_code: 33f02178-e1bd-466d-a9a6-fa3f56cacda1, criado no momento do seed do banco de dados, para testar os endpoints.
    • Acesse http://localhost:3000/documentation, onde todos os endpoints da aplicação estão expostos por meio da interface do SwaggerUI OU
    • No seu cliente API REST de preferência como Insomnia, Postman, Hoppscotch...

Melhorias

  • Uso de conventional commits aliado ao Husky e o pacote commitlint para automatizar os commits usando o comando npm run commit, assim, no momento do commit, as definições já são expostas na CLI;
  • Documentação com o uso do Swagger;
  • Separação de responsabilidades usando repositórios, controllers e services;
  • Tratamento de erros;
  • Scripts de linting garantindo qualidade e estilização do código;
  • Migrações e seed do banco de dados.

Créditos

Esse como parte do desafio para a vaga de Desenvolvedor Full Stack da Shopper

TODO

  • Testes automatizados

GitHub @evans-costa  ·  LinkedIn @evandro-souzac  ·  Site @evandrocosta.dev.br

About

Um serviço que gerencia medição e leitura individualizada de consumo de água e gás usando a Gemini AI

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published