Desenvolvo automações em Python para processos internos e aplicações web full-stack. Na prática: o tipo de rotina que alguém fazia à mão — ler lotes de documento, conversar com sistema legado, preencher planilha, disparar e-mail, baixar relatório de portal — e as aplicações que substituem essa planilha compartilhada por algo com login, permissão e histórico.
| Repositório | O que é | Destaque técnico |
|---|---|---|
| portal-aprovacao | Portal de aprovação de artes por clientes: o designer sobe as artes, o cliente aprova por link público, sem criar conta | Segurança em camadas — RLS no banco para o admin, token de 24 bytes mediado pelo back-end para o acesso público; upload direto ao Storage por URL assinada, com compressão para WebP no navegador; limpeza automática via pg_cron + Edge Function |
| sistema-bancario-pix | Banco digital com PIX | FastAPI + React + Supabase, autenticação JWT, transações atômicas e testes automatizados |
Versões genéricas e independentes de automações que escrevi no trabalho, feitas do zero para publicação: mesma técnica e mesma arquitetura, domínio neutro, sem código, credencial, endpoint ou dado de empresa do sistema original.
| Repositório | O que é | Destaque técnico |
|---|---|---|
| soap-doc-sync | Envio de documentos em lote para webservice SOAP legado | WS-Security PasswordDigest montado à mão; resolução de titular em cadeia (cache SQLite → REST → SOAP → operador), onde todo acerto externo alimenta o cache |
| cobranca-email | Régua de cobrança a partir de planilha do ERP | Um e-mail por cliente, não por título; mapeamento de colunas em notação A1, como configuração; modo simulação por padrão |
| baixador-relatorios | Download automatizado em portais web paginados | Fim da paginação detectado por assinatura SHA-256 do conteúdo, não pelo que o portal diz; credencial inválida e portal fora do ar tratados de formas opostas |
| renomeador-pdf-ocr | Renomeação de lotes de PDF pelo conteúdo | OCR só quando a camada de texto reprova em densidade e qualidade; escolha da data por pontuação, penalizando data de nascimento |
169 testes somados nos quatro, todos offline — sem rede, sem credencial, sem serviço externo.
- Configuração fora do código. Segredo em variável de ambiente,
.envno.gitignore,.env.exampledocumentando as chaves sem conter valor. - Modo seguro por padrão. Em rotina que envia, apaga ou publica, o comportamento padrão é simular. Quem liga o envio é uma flag explícita.
- Falha explícita. Erro que exige reação diferente vira exceção diferente: credencial inválida para na hora, instabilidade de rede repete com espera.
- I/O por injeção de dependência. É o que permite testar paginação sem navegador, envio sem servidor SMTP e integração SOAP sem rede.
- Toda execução deixa rastro. Log CSV com uma linha por item, e cada arquivo terminando em exatamente uma pasta de resultado.
Python · FastAPI · pytest · pandas / openpyxl · Playwright · zeep / SOAP · PyMuPDF / Tesseract · tkinter Web · React · Vite · JavaScript Dados · PostgreSQL / Supabase · SQLite Outros · C# · Git
In English — I build Python automations for internal business processes (batch document processing, legacy SOAP integrations, spreadsheet-driven workflows, browser automation, OCR pipelines) and full-stack web applications with FastAPI, React and Supabase. The Python repositories above are generic, independently written versions of production tools — same techniques and architecture, neutral domain, no proprietary code or data. 169 tests total, all offline.