Todos os projetos

G-Finance

Controle financeiro pessoal que uso todos os dias

Papel
Projeto pessoal: produto, back-end, front-end e infraestrutura
Situação
Em produção

O problema

Planilhas não respondiam às perguntas que eu tinha no dia a dia: quanto a fatura do cartão já soma, quanto vai sobrar no fim do mês e como o saldo evolui nos próximos anos. Eu queria lançar um gasto em segundos, de onde estivesse.

O que construí

  • Lançamentos, categorias e contas, com dashboard e relatórios mensais e anuais.
  • Cartão de crédito com fatura provisória, atualizada a cada compra e fechada automaticamente no dia 1º.
  • Orçamento de alimentação no modelo de envelope, separado dos totais do mês.
  • Previsões de saldo de 1 a 40 anos com inflação, reajuste de renda e rendimento configuráveis, e simulação "e se".
  • Comparação com o mês anterior, proporcional ao dia do mês.
  • App instalável no iPhone (PWA) com notificações push: fatura, saldo de alimentação e resumo semanal.
  • Lançamentos pelo Telegram: um bot recebe mensagens curtas e registra o gasto.

Arquitetura

  1. Angular PWASignals, tema claro/escuro, service worker
  2. TraefikHTTPS (Let’s Encrypt)
  3. API Spring BootJWT, regras de negócio, agendamentos
  4. PostgreSQL 16Flyway, SQL com MyBatis

O bot do Telegram chega por webhook e usa a mesma camada de serviço da web. As notificações saem por Web Push.

Decisões técnicas

MyBatis com SQL explícito em vez de JPA

Relatórios e agregações ficam legíveis e fáceis de otimizar com índices. Todo SQL é parametrizado.

Cálculos financeiros em um só lugar

Valores em BigDecimal e NUMERIC(14,2), com arredondamento HALF_EVEN centralizado em um FinancialCalculator testado.

Serviço independente do canal

Web e bot do Telegram enviam o mesmo comando de lançamento: as regras são escritas uma vez só.

Sessão curta e renovação segura

JWT de 30 minutos com refresh token rotativo em cookie HttpOnly de 60 dias.

PWA em vez de app de loja

Instalação imediata no iPhone, notificações push e uma única base de código.

Tecnologias

  • Java 21
  • Spring Boot 4
  • Spring Security (JWT)
  • MyBatis
  • PostgreSQL 16
  • Flyway
  • JUnit 5 + Testcontainers
  • Angular 22
  • Signals
  • PWA + Web Push
  • Telegram Bot API
  • Docker

Resultado

Uso o G-Finance todos os dias para controlar as finanças da casa. Cada push na branch principal é testado e publicado automaticamente, com aviso no Telegram.

Este site é Angular pré-renderizado em português e inglês, criado pelo meu Projects Generator e publicado na minha plataforma Kubernetes.

© 2026 Gustavo Gomes Farias