https://github.com/evans-costa/consumeterai
Um serviço que gerencia medição e leitura individualizada de consumo de água e gás usando a Gemini AI
https://github.com/evans-costa/consumeterai
ai docker fastify gemini-api nodejs postgresql typescript
Last synced: 6 months ago
JSON representation
Um serviço que gerencia medição e leitura individualizada de consumo de água e gás usando a Gemini AI
- Host: GitHub
- URL: https://github.com/evans-costa/consumeterai
- Owner: evans-costa
- Created: 2024-08-27T12:45:39.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-16T13:43:28.000Z (almost 2 years ago)
- Last Synced: 2025-01-22T02:14:56.325Z (over 1 year ago)
- Topics: ai, docker, fastify, gemini-api, nodejs, postgresql, typescript
- Language: TypeScript
- Homepage:
- Size: 441 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
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








Recursos principais •
Como usar •
Melhorias •
Créditos •
TODO
## 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](https://nodejs.org/en/download/) (que vem com o [npm](http://npmjs.com)) e o [Docker](https://www.docker.com/get-started/) com [Docker Compose](https://docs.docker.com/compose/install/).
- Da sua linha de comando:
```bash
# 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
```env
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=
```
> **📌 Nota:**
> Para gerar uma chave de API do Google Gemini, por favor, siga as instruções contidas [nesse link](https://ai.google.dev/gemini-api/docs/api-key?hl=pt-br).
### Ambiente local
Para rodar essa aplicação localmente, siga essas instruções:
- Instale as dependências:
```bash
# Instale as dependências
$ npm install
```
- Rode o seguinte comando:
```bash
# 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:
```bash
# 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](https://insomnia.rest/download), [Postman](https://www.postman.com/), [Hoppscotch](https://hoppscotch.io/)...
## 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](https://github.com/evans-costa) ·
> LinkedIn [@evandro-souzac](https://www.linkedin.com/in/evandro-souzac/) ·
> Site [@evandrocosta.dev.br](https://evandrocosta.dev.br)