disponível para novos projetos

Software que resolve problemas reais.

Analista de sistemas há mais de uma década — Delphi, Oracle, Node.js e integrações que não podem falhar. Nas horas livres, construo aplicações web completas com Node.js, PostgreSQL e Next.js, sempre a partir de uma necessidade concreta: cuidar da rotina diária de uma pessoa com deficiência, organizar os shows de uma banda, entender um financiamento.

11 anosdesenvolvendo software
5projetos próprios no ar
Full-stackback, front e banco
// projetos pessoais

O que eu construí no tempo livre

Cinco aplicações em produção, do zero: quatro produtos e uma peça de infraestrutura que autentica os que precisam de login. Nenhum é exercício de tutorial — todos resolvem um problema que eu tinha.

🧡
no ar

Luccare

Rotinas de cuidado

Organiza a rotina diária de pessoas com deficiência — medicações, alimentação, terapias — compartilhada entre pais e cuidadores, com histórico completo de execução e alertas de atraso. Nasceu do cuidado real com o Lucca.

Next.js 16ExpressPrismaPostgreSQL
🎸
no ar

Bandapp

Gestão de shows multi-artista

Do primeiro contato do cliente até o dia do evento. Funil de vendas que vira gestão operacional, com calendário central, checklists e alertas de prazo. Cada banda é um tenant isolado, com permissões granulares por vínculo.

Multi-tenantNext.js 16PrismaAuditoria
📊
no ar

Agiotapp

Memória de cálculo de financiamentos

Mostra parcela por parcela o que o banco não mostra: saldo devedor, correção monetária, juros, amortização e seguro. Suporta SAC e PRICE, indexação a TR, IPCA ou taxa personalizada, com aritmética decimal precisa.

SAC / PRICEDecimal.js130 testesNext.js 16
🎵
no ar

Afinador

Afinador cromático no navegador

Afina violão, guitarra e baixo pelo microfone do aparelho — sem instalar nada e sem cadastro. Reconhece a corda sozinho e diz se é para apertar ou afrouxar. O áudio nunca sai do dispositivo.

Web Audio APIYINNext.js 16105 testes
🔐
infraestrutura

GlobalAuth

Autenticação como serviço

Um único serviço de autenticação para os três apps — mas com base de usuários isolada por aplicação: cada app tem seu próprio cadastro, segredo JWT e TTL. Refresh tokens com rotação, painel administrativo e API documentada. Nenhum app de produto armazena senha.

JWTMulti-appSwaggerNode.js
// engenharia

Como cada um foi construído

Para quem quer olhar por dentro: decisões de arquitetura, problemas difíceis e o que aprendi em cada projeto.

Luccare — rotinas recorrentes, N:N com papéis

O problema

Cuidar de uma criança com deficiência envolve várias pessoas — pai, mãe, cuidador, terapeuta — e uma rotina que não pode falhar. Sem um lugar central, cada um anota do seu jeito e ninguém sabe se o remédio das 14h foi dado.

A solução

  • Rotinas recorrentes com registro de execução e histórico
  • Dependentes compartilhados entre responsáveis (N:N com papéis)
  • Controle de acesso por dependente, não só por usuário
  • Verificação de e-mail e recuperação de senha

Arquitetura

Monorepo com backend/ e frontend/. Backend em camadas: Controller → Service → Repository → Prisma → PostgreSQL. Rotas protegidas por middleware JWT. Versionado com Semantic Versioning (v1.0.0).

Stack

Next.js 16React 19Tailwind 4 Node.jsExpress 5Prisma 6 PostgreSQLJWT
Bandapp — multi-tenant, permissões granulares, auditoria

O problema

Banda vive de show, e show tem um ciclo longo: proposta, negociação, contrato, produção, dia do evento. Isso costuma morar em grupos de WhatsApp e planilhas soltas — prazos passam, datas conflitam.

A solução

  • Um registro único de Show atravessa as 5 fases do ciclo
  • Calendário central mostra datas em negociação e fechadas
  • Cada banda é um tenant: dados totalmente isolados
  • Checklists e alertas automáticos de prazo

Decisões difíceis

Autorização por permissões granulares em vez de papéis fixos — perfis são só conjuntos nomeados de permissões. Identidade fica no GlobalAuth; autorização por banda é responsabilidade do app. Auditoria e observabilidade desde a v1.

Stack

Next.js 16React 19Tailwind 4 ExpressPrismaPostgreSQL GlobalAuthSwagger
Agiotapp — motor de cálculo financeiro, 130 testes

O problema

Quem tem financiamento imobiliário raramente entende a própria parcela. O extrato do banco mostra o valor, não a conta: quanto foi correção monetária, quanto foi juro, quanto realmente abateu a dívida.

A solução

  • Memória de cálculo completa, do mês 1 ao fim do contrato
  • SAC e PRICE, indexado a TR, IPCA ou taxa personalizada
  • Projeção dos meses futuros com forward-fill do último índice
  • Recálculo em cascata quando um índice real é publicado

Cuidados de engenharia

Aritmética decimal precisa (nada de float nativo) — em dinheiro, erro de arredondamento vira bug de confiança. Respostas 404 idênticas para "não existe" e "é de outro usuário", para não vazar existência de recurso. 130 testes de backend cobrindo o motor de cálculo.

Stack

Next.js 16React 19Tailwind 4 ExpressPrismaPostgreSQL GlobalAuth
Afinador — áudio no navegador, precisão de 1 cent

O problema

Começou como brincadeira entre amigos. Hoje é o único afinador que uso. Os mais populares exigem instalar app, com anúncio e permissão demais.

A solução

  • Dedilhe e ele reconhece sozinho qual corda é
  • 10 presets, de violão a baixo de 5 cordas
  • Diapasão ajustável e tom de referência
  • Sem backend: o áudio nunca sai do aparelho

O desafio

Fácil no violão, difícil no baixo. Corda grave vibra devagar demais, e o zumbido da tomada cai bem no meio das duas mais graves. Cada instrumento ganhou seu próprio ajuste de escuta e filtro.

Como sei que está certo

O cálculo roda fora do navegador, então dá para testá-lo com sons gerados por computador: 105 testes garantem acerto dentro de 1 cent — diferença que o ouvido não percebe.

Stack

Next.js 16React 19Tailwind 4 Web Audio APIYINSem backend
GlobalAuth — o serviço de auth que sustenta os outros três

O problema

Três apps independentes, três telas de login, três tabelas de senha para manter seguras. Reescrever autenticação a cada projeto é retrabalho — e cada cópia é mais uma superfície de ataque.

A solução

  • Um serviço de autenticação reaproveitado por todos os apps
  • Cada app é um tenant: base de usuários, jwtSecret e TTL próprios
  • Nada de conta compartilhada — o cadastro de um app não existe no outro
  • Refresh tokens com rotação
  • Validação local do token no app — sem chamada de rede por request
  • Painel administrativo e API documentada em Swagger

O padrão que surgiu

Cada app mantém um shadow user local sem senha, referenciando o usuário no GlobalAuth. O que é compartilhado é a infraestrutura de autenticação, não a conta: o serviço é um só, as bases de usuário são separadas. Autorização também continua local — só o app sabe o que cada usuário pode fazer dentro dele.

Stack

Node.jsExpressPrisma PostgreSQLJWTSwagger
// vida profissional

E o que faço das 9 às 18

Os projetos acima são de tempo livre. No trabalho a stack é outra — mais antiga, mais crítica e com muito mais dinheiro passando por ela.

Analista de Sistemas
Grupo Posthaus

Responsável pelas regras de negócio do sistema financeiro — contas a pagar e contas a receber — em uma operação com volume alto de transações.

Estou na empresa desde 2010 e passei por operação, processos e BI antes de assumir desenvolvimento. Conhecer o negócio por dentro mudou a forma como eu escrevo software: requisito raramente chega pronto, e a maior parte do trabalho é descobrir o que o sistema realmente precisa fazer.

desde 2019 no cargo 14 anos de casa Blumenau · SC

Integrações financeiras

Pix, boletos, DOC/TED, pagamento de tributos e Serasa Limpa Nome — conectando um sistema legado a APIs modernas, onde falha silenciosa vira prejuízo. A integração de Pix que implementei e mantenho já processou mais de 900 mil transações.

Legado e moderno no mesmo dia

Delphi (7, XE3 e XE6) convivendo com Node.js. Manter software que roda há décadas e ainda assim entregar coisa nova exige respeito ao código que já existe.

Oracle e PL/SQL

Consistência e performance exigidas ao mesmo tempo: queries e rotinas PL/SQL que fecham com precisão de centavos e ainda assim precisam responder rápido sobre uma base que só cresce.

BI antes de dev

Quatro anos desenvolvendo QlikView e rotinas de ETL: indicadores para vendas, operação e negócios. Foi ali que aprendi a olhar dado com desconfiança.

Stack profissional

Delphi Oracle PL/SQL Node.js JavaScript QlikView ETL APIs e integrações Análise de requisitos
// processo

Como eu trabalho

Um padrão que se repete em todos os projetos — e que é a razão de eles se parecerem por dentro.

01

Especificação antes do código

Todo projeto começa com requisitos escritos, modelo de dados e decisões registradas. Ambiguidade resolvida no documento custa muito menos que resolvida em produção.

02

Arquitetura em camadas

Controller → Service → Repository → ORM. Regra de negócio não mora no controller, e SQL não vaza para o service. Previsível de ler e barato de testar.

03

Segurança por padrão

Autenticação em serviço dedicado, rotas protegidas por middleware, respostas que não vazam existência de recurso, senhas fora dos apps de produto.

04

Testes e verificação real

Testes automatizados no backend e verificação ponta a ponta contra a stack rodando de verdade — banco, auth e frontend juntos, não só mocks.

// stack

Ferramentas do dia a dia

JavaScript Node.js Express React 19 Next.js 16 Tailwind CSS 4 Prisma ORM PostgreSQL JWT Swagger / OpenAPI Git Linux / VPS

Vamos conversar

Aberto a oportunidades, freelas e boas conversas sobre arquitetura. Costumo responder rápido.