Backend completo para o aplicativo Traevo, uma plataforma de finanças inteligentes focada em simplicidade e acessibilidade.
- Python +
- FastAPI - Framework web moderno e rápido
- SQLAlchemy - ORM para Oracle Database
- Oracle Database - Banco de dados corporativo
- JWT - Autenticação com tokens
- Bcrypt - Hashing seguro de senhas
- Pydantic - Validação de dados
traevo-backend/
├── app/
│ ├── core/ # Configurações e segurança
│ │ ├── config.py # Variáveis de ambiente
│ │ ├── database.py # Conexão Oracle
│ │ └── security.py # JWT e Bcrypt
│ ├── models/ # Modelos de dados
│ │ ├── database_models.py # SQLAlchemy models
│ │ └── schemas.py # Pydantic schemas
│ ├── repositories/ # Acesso a dados (CRUD)
│ ├── services/ # Lógica de negócio
│ ├── api/routers/ # Endpoints REST
│ └── main.py # Aplicação principal
├── requirements.txt
├── Dockerfile
├── .env.example
└── README.md
- Python 3.11+
- Oracle Database (ou acesso remoto)
- Oracle Instant Client
git clone <seu-repositorio>
cd traevo-backendpython -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windowspip install -r requirements.txtCopie .env.example para .env e configure:
cp .env.example .envEdite o .env com suas credenciais:
ORACLE_USER=seu_usuario
ORACLE_PASSWORD=sua_senha
ORACLE_DSN=localhost:1521/XEPDB1
JWT_SECRET_KEY=sua_chave_secreta_super_segurauvicorn app.main:app --reloadA API estará disponível em: http://localhost:8000
Documentação interativa: http://localhost:8000/docs
POST /auth/register- Registrar novo usuárioPOST /auth/login- Fazer login (tokens em cookies)POST /auth/refresh- Renovar token de acessoPOST /auth/logout- Fazer logout
GET /me- Obter perfil do usuárioPATCH /me- Atualizar perfil
POST /transactions- Criar transaçãoGET /transactions- Listar transações (com filtros)DELETE /transactions/{id}- Deletar transação
POST /budget- Criar orçamentoGET /budget- Listar orçamentos do mêsDELETE /budget/{id}- Deletar orçamento
-
GET /dashboard/overview- Endpoint principal! Retorna:- KPIs do mês (entradas, saídas, saldo)
- Orçamentos com status
- Previsão da IA (risco e insights)
- Estatísticas adicionais
-
POST /dashboard/refresh-prediction- Atualizar previsão da IA
O serviço IAAnalysisService implementa uma simulação de IA que:
- Coleta histórico de 6 meses de transações
- Calcula média móvel de gastos
- Projeta gastos futuros baseado em tendências
- Determina índice de risco:
- 🟢 VERDE: Gastos < 70% do orçamento
- 🟡 AMARELO: Gastos entre 70-90%
- 🔴 VERMELHO: Gastos > 90% ou tendência crítica
- Gera insights personalizados com mensagens encorajadoras
# VERMELHO: Situação crítica
- Gasto projetado > 90% do orçamento total
- Gastou > 70% antes do dia 20 do mês
# AMARELO: Atenção necessária
- Gasto projetado entre 70-90%
- Tendência crescente + gasto atual > 50%
# VERDE: Situação saudável
- Gasto projetado < 70%
- Tendência estável ou decrescentedocker build -t traevo-backend .docker run -d \
-p 8000:8000 \
--env-file .env \
--name traevo-api \
traevo-backend- Crie um novo Web Service
- Conecte seu repositório GitHub
- Configure:
- Build Command:
pip install -r requirements.txt - Start Command:
uvicorn app.main:app --host 0.0.0.0 --port $PORT
- Build Command:
Adicione no Render:
ORACLE_USER=seu_usuario
ORACLE_PASSWORD=sua_senha
ORACLE_DSN=seu_dsn_oracle
JWT_SECRET_KEY=sua_chave_secreta
ALLOWED_ORIGINS=https://seu-frontend.com
- Access Token: Válido por 30 minutos
- Refresh Token: Válido por 7 dias
- Tokens armazenados em cookies HttpOnly (não acessíveis via JavaScript)
- Todas as queries filtram por
ID_USUARIO - Usuário nunca acessa dados de outros usuários
- Validação em todas as camadas (Repository, Service, Router)
- Hash com Bcrypt (salt automático)
- Senha nunca retornada nas APIs
- Mínimo de 6 caracteres (configurável)
- CRUD completo de transações
- Orçamentos mensais
- Dashboard consolidado
- Simulação de IA com regras de negócio
- Substituir simulação por ML real (Regressão Linear, ARIMA)
- Jobs em background (Celery/APScheduler)
- Notificações por email/push
- Exportar relatórios (PDF/Excel)
- Categorias inteligentes (ML para classificação)
- Multi-moeda
- Integração com bancos (Open Banking)
- Metas de economia
- Análise comparativa (usuário vs média)
curl -X POST http://localhost:8000/auth/register \
-H "Content-Type: application/json" \
-d '{
"nome": "João Silva",
"email": "joao@example.com",
"senha": "senha123"
}'curl -X POST http://localhost:8000/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "joao@example.com",
"senha": "senha123"
}' \
-c cookies.txtcurl -X POST http://localhost:8000/transactions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-d '{
"id_categoria": "uuid-da-categoria",
"descricao": "Almoço no restaurante",
"valor": 45.50,
"data_transacao": "2025-12-19",
"tipo": "SAIDA"
}'curl -X GET http://localhost:8000/dashboard/overview \
-H "Authorization: Bearer SEU_ACCESS_TOKEN"- Variáveis:
snake_case - Classes:
PascalCase - Constantes:
UPPER_CASE - Funções:
snake_case
- Docstrings em todas as funções públicas
- Type hints obrigatórios
- Comentários inline para lógica complexa
feat: adiciona endpoint de categorias personalizadas
fix: corrige cálculo de percentual no orçamento
docs: atualiza README com exemplos de uso
refactor: melhora performance da query de transações
- Fork o projeto
- Crie uma branch (
git checkout -b feature/nova-feature) - Commit suas mudanças (
git commit -m 'feat: adiciona nova feature') - Push para a branch (
git push origin feature/nova-feature) - Abra um Pull Request
Este projeto está sob a licença MIT.
Felipe Ferrete - Desenvolvedor BackEnd e Modelos de IA Gustavo Bosak - Desenvolvedor FrontEnd
Para dúvidas ou sugestões, abra uma issue no GitHub.
Desenvolvido com ❤️ usando FastAPI