Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Expense Tracker

Sistema de registro de gastos e controle financeiro via WhatsApp.

Manda uma mensagem no grupo → a IA categoriza o gasto → salva no banco de dados → responde com confirmação + piada.


Como funciona

Mensagem no WhatsApp
        ↓
Evolution API (recebe e encaminha)
        ↓
Spring Boot (processa o webhook)
        ↓
OpenAI (classifica categoria e valor)
        ↓
PostgreSQL (salva o gasto)
        ↓
Resposta no grupo com confirmação + percentual da meta + piada

Exemplos de mensagens:

mercado 150
academia 90
roupa 1800 em 6x
ifood 45

Resposta:

✅ Mercado registrado — R$ 150,00
🟢 Acumulado: R$ 150,00 / R$ 1.700,00 (8,8%)
Só 8,8% da meta do mercado... ou você tá comendo capim? 🌿

Stack

Camada Tecnologia
Backend Java 17 + Spring Boot 3.5
Banco de dados PostgreSQL 16
Cache Redis 7
WhatsApp Evolution API v2.3.7
IA OpenAI GPT-4o-mini
Migrations Flyway
Infraestrutura Docker + Docker Compose

Arquitetura: Hexagonal (Ports & Adapters) com Clean Architecture.


Requisitos

  • Docker e Docker Compose
  • Conta na OpenAI com créditos
  • Número de WhatsApp dedicado para o bot

Como usar

1. Clone o repositório

git clone https://github.com/joaoluckemeier/expense-tracker.git
cd expense-tracker

2. Configure as variáveis de ambiente

cp .env.example .env

Preencha o .env com seus valores:

Variável Descrição
OPENAI_API_KEY Chave da API OpenAI
EVOLUTION_API_KEY Chave de autenticação da Evolution API
WEBHOOK_SECRET String aleatória para validação do webhook
AUTHORIZED_GROUP_JID JID do grupo WhatsApp autorizado (ex: 123456@g.us)
DB_USERNAME Usuário do PostgreSQL
DB_PASSWORD Senha do PostgreSQL

3. Suba os serviços

docker compose up -d

4. Conecte o WhatsApp

Acesse o manager da Evolution API, crie uma instância e conecte via QR code ou código de pareamento.

5. Registre o webhook

curl -X POST "http://localhost:8081/webhook/set/NOME_DA_INSTANCIA" \
  -H "apikey: $EVOLUTION_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "webhook": {
      "enabled": true,
      "url": "http://SEU_IP:8080/webhook",
      "headers": { "X-Webhook-Secret": "SEU_WEBHOOK_SECRET" },
      "byEvents": false,
      "base64": false,
      "events": ["MESSAGES_UPSERT"]
    }
  }'

6. Cadastre suas metas

Acesse o Adminer em http://localhost:8082 e insira metas na tabela goals por categoria.

7. Pronto!

Mande uma mensagem no grupo configurado e o sistema responde automaticamente.


Funcionalidades

  • ✅ Classificação automática de categoria via IA
  • ✅ Registro de gastos parcelados (roupa 1800 em 6x)
  • ✅ Controle de metas por categoria
  • ✅ Status visual com emojis (🟢 🟡 🟠 🔴)
  • ✅ Piada personalizada gerada pela IA a cada registro
  • ✅ Validação de grupo autorizado
  • ✅ Segurança via webhook secret token

Estrutura do projeto

src/main/java/com/joaoluckemeier/expense_tracker/
├── adapter/
│   ├── in/webhook/          # Recebe mensagens do WhatsApp
│   └── out/
│       ├── ai/              # Integração com OpenAI
│       ├── messaging/       # Envio de respostas via Evolution API
│       └── persistence/     # Repositórios JPA
├── config/                  # Configuração dos beans
└── domain/
    ├── model/               # Entidades e DTOs
    ├── port/                # Interfaces (ports)
    └── usecase/             # Regras de negócio

About

Repositório de sistema para controle financeiro.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages