Pular para o conteúdo
Igor Bahia
EN

Igor BahiaEngenheiro de software full stack

Aberto a conversas

Sistema bom é sistema que não cai.

Sou Igor Bahia, engenheiro de software full stack em Salvador. Passei oito anos numa refinaria antes de migrar para o código — primeiro desmontando bombas, depois decidindo quando milhares de equipamentos podiam parar. Trouxe a régua comigo.

Hoje modernizo plataformas do setor elétrico no Lactec: interfaces novas em cima de sistemas legados, backends em .NET e Python, e integração com o ecossistema Smart Grid da Landis+Gyr.

desde 2008
em ambientes críticos
desde 2022
escrevendo software
3 stacks
node · python · .net
GDG
organizador em salvador
01Sobre

Da bomba centrífuga ao deploy

Comecei aos dezenove anos como ajudante de mecânico num terminal de petróleo em Madre de Deus, desmontando bombas centrífugas multiestágio e compressores alternativos. Depois virei planejador: passei a decidir, com anos de antecedência, quando milhares de equipamentos parariam — e a responder quando a conta não fechava.

Ninguém se machuca quando um botão desalinha. Mas a lógica é a mesma dos dois lados: ou você projeta pensando na falha, ou a falha te encontra num domingo às três da manhã. Migrei para o software em 2022 e essa é a única coisa que trouxe intacta do chão de fábrica.

Na prática, isso quer dizer que penso em log, timeout e caminho de erro antes de pensar em animação. Gosto de sistema legado — é onde mora o problema real, e onde dá para provar que engenharia não é reescrever tudo do zero. Fora do código, organizo o Google Developer Group em Salvador. E quando a cabeça trava, o remédio é surf ou corrida.

Igor Bahia
Igor Bahia, Salvador — BA
02Trajetória

Dezoito anos em coisas que não podem parar

Duas carreiras, uma régua só. A ordem aqui é do mais recente para o começo de tudo.

  1. Lactec

    em curso

    Analista de sistemas de TI · Salvador, BA

    mai 2024 — hoje

    Modernização de plataformas críticas do setor elétrico — as legadas que ninguém pode desligar.

    • Construo interfaces novas em Next.js, React e TypeScript desacopladas de sistemas legados, para que o front possa evoluir sem esperar a reescrita do backend.
    • Desenvolvo e sustento backends em C#/.NET e Python (Django/DRF), com APIs REST, autenticação federada via Keycloak/JWT e integração entre serviços que não foram feitos para conversar.
    • Atuo em projetos do ecossistema Smart Grid da Landis+Gyr — AMI, RF Mesh e DLMS/COSEM — com times multinacionais e aplicações em operação real fora do Brasil.
    • Investigo incidente: log, payload, fluxo de integração, e a pergunta chata de "por que isso só quebra em produção?". Pipelines em Jenkins, troubleshooting em SQL Server, Oracle e PostgreSQL.
    • Next.js
    • React
    • TypeScript
    • C#/.NET
    • Python
    • Django/DRF
    • Keycloak
    • Docker
    • Jenkins
    • Smart Grid
  2. Cubos Academy

    Desenvolvedor full stack · Salvador, BA

    set 2023 — fev 2024

    Rastreabilidade e monitoramento logístico para uma operação socioambiental de larga escala.

    • Full stack com React, Node.js, TypeScript, Fastify, Prisma e PostgreSQL: API REST, autenticação com JWT, validação tipada com Zod e Docker no ambiente.
    • O sistema acompanhou a operação de reciclagem do Carnaval de Salvador — dado chegando do campo, de vários pontos ao mesmo tempo, com gente esperando o número do outro lado.
    • A operação envolveu cerca de 140 toneladas de resíduo e milhares de catadores, e foi apresentada na Climate Week NYC.
    • React
    • Node.js
    • TypeScript
    • Fastify
    • Prisma
    • PostgreSQL
    • Zod
    • Docker
  3. Transpetro — Petrobras

    Planejamento e manutenção industrial · Madre de Deus e Camaçari, BA

    2008 — 2016

    Oito anos em terminal de petróleo: da chave de grifo ao planejamento de parada de ativo crítico.

    • Manutenção mecânica em bombas centrífugas multiestágio, compressores alternativos, motores elétricos e diesel, e braços de carregamento marítimo.
    • Depois, planejamento e programação de manutenção via SAP/R3: janelas de parada definidas com anos de antecedência, análise de disponibilidade e estoque crítico.
    • É onde aprendi que rastreabilidade não é enfeite de auditoria: é o que separa "sabemos o que aconteceu" de "achamos que foi isso".
    • SAP/R3
    • Confiabilidade
    • Gestão de ativos
    • Manutenção preditiva

Formação

  • 2022 — 2025

    Análise e Desenvolvimento de Sistemas

    Universidade Salvador

  • 2022 — 2023

    Desenvolvimento de software

    Cubos Academy

  • 2010 — 2011

    Técnico em mecânica

    Centro de Formação Técnica da Bahia

03Trabalho

O que dá para mostrar

O que faço no Lactec não cabe aqui: é código de cliente, em sistema de energia, sob acordo. O que está abaixo é o laboratório — projetos pessoais onde testo ideia e ferramenta antes de levar para onde importa. São honestos sobre o que são.

  • Malha

    jul 2026

    Coroplético dos 5570 municípios brasileiros que desenha o mesmo indicador pelos cinco métodos de classificação ao mesmo tempo. Onde as faixas são cortadas muda a conclusão mais do que qualquer outra decisão do mapa, e quase nenhum mapa publicado revela a escolha feita. Traz também o I de Moran local, com vizinhança extraída da topologia e correção por comparações múltiplas.

    A classificação por quebras naturais é o ótimo global exato em O(k·n·log n): 5570 municípios em 2,7 ms contra 354,8 ms da versão quadrática, que continua no repositório sem servir à aplicação — existe para provar que a rápida chega ao mesmo custo. A página /validacao refaz a prova no navegador, sobre o dado em produção.

    • Next.js
    • TypeScript
    • MapLibre GL
    • TopoJSON
    • Jenks
    • Moran's I
  • Refract

    jul 2026

    Previsão de surf calculada por pico, não por praia. A malha pública de ondulação tem 8 km e devolve os mesmos números para picos vizinhos, então a diferença entre eles vem de um modelo físico: dispersão, empolamento, refração de Snell e profundidade de quebra, mais maré prevista por soma de constituintes harmônicos.

    A nota nunca aparece sozinha: sai aberta nos seis fatores que a produziram, com a grandeza medida ao lado, e todo parâmetro de pico declara se foi medido ou estimado. A maré prevista bate com a tábua da Marinha em 21 mm, e as invariantes do modelo são verificadas sobre mil casos gerados por execução.

    • Next.js
    • TypeScript
    • Wave physics
    • Harmonic tide
    • fast-check
    • Zod
  • Ledgerline

    mai–jun 2026

    Motor de faturamento de energia bitemporal: ingere leituras de forma idempotente e fora de ordem, precifica contra uma tarifa ANEEL versionada (período, bandeira, feriado móvel) e lança num razão de partidas dobradas que sempre soma zero. Mantém o histórico em dois eixos — valid_time × transaction_time — que reproduz qualquer fatura como ela era conhecida em qualquer data.

    A regra do dinheiro não fica no if do código: o Postgres recusa uma asserção bitemporal sobreposta com um EXCLUDE gist, e o razão que soma zero é provado por propriedade sobre milhares de sequências embaralhadas — não afirmado.

    • Next.js
    • TypeScript
    • PostgreSQL
    • Bitemporal
    • Double-entry
    • fast-check
  • MeshVigil

    mar–abr 2026

    Simulador de rede mesh AMI com console de observabilidade: medidores roteando por coletores até o head-end, reconvergência da malha ao vivo, injeção de caos e painel de SLA. No coração, um codec DLMS/COSEM de verdade — HDLC, APDUs, códigos OBIS — que codifica cada leitura em bytes e decodifica de volta.

    A simulação inteira roda no navegador, de propósito: não tem backend para cair por timeout, roda de graça na Vercel, e a malha reconverge na sua frente quando você derruba um coletor. Foi como trouxe o que faço no setor elétrico para algo que dá para abrir e quebrar.

    • Next.js
    • TypeScript
    • Zustand
    • DLMS/COSEM
    • OpenTelemetry
    • Vitest
  • CritPath

    jan–fev 2026

    Otimizador de parada de manutenção modelado como RCPSP: milhares de ordens, precedências, equipes limitadas e janela fixa. O solver — serial SGS com simulated annealing — é compilado para WebAssembly e roda numa Web Worker, no cliente. Importa o export do SAP PM (IW39/IW49), calcula caminho crítico, risco de data por Monte Carlo, e mede o gap contra o dataset PSPLIB, que tem ótimo provado.

    Passei anos planejando parada de manutenção no SAP, decidindo com meses de antecedência quando cada equipamento parava. O CritPath é esse problema virado solver: lê o mesmo export do SAP que eu usava e otimiza o cronograma — com o gap medido contra ótimo provado, não declarado.

    • Next.js
    • TypeScript
    • WebAssembly
    • RCPSP
    • Monte Carlo
    • Web Workers
  • Auscult

    nov–dez 2025

    Diagnóstico de vibração de máquinas rotativas no navegador: FFT com janelamento, envelope por Hilbert e as frequências de defeito de rolamento (BPFO, BPFI, BSF) calculadas a partir da geometria. Um motor de regras aponta a falha — pista externa, desalinhamento, folga — com a severidade classificada pela ISO 20816.

    Passei anos na refinaria diagnosticando rolamento por vibração. O Auscult é esse conhecimento virado código: todo o processamento de sinal roda no navegador, e o detector é validado contra o dataset de rolamentos da Case Western — inclusive nos casos em que ele erra.

    • Next.js
    • TypeScript
    • DSP
    • FFT
    • ISO 20816
    • Vitest
  • Pricetime

    set–out 2025

    Motor de livro de ofertas (matching engine) — o núcleo de uma bolsa. Casa ordens de compra e venda por prioridade preço-tempo, suporta limit, market, IOC, FOK, cancelamento e substituição, e registra cada negócio por event sourcing, com replay determinístico bit a bit a partir de uma única semente.

    Num sistema que move dinheiro, correção é a funcionalidade. Cada invariante — caixa e ações conservados, o livro nunca cruzado, ninguém furando a fila — é provada por teste de propriedade sobre milhares de fluxos de ordens aleatórios, e verificada ao vivo na tela. Provada, não prometida.

    • Next.js
    • TypeScript
    • Matching Engine
    • Event Sourcing
    • fast-check
04Stack

Ferramenta é meio, não identidade

Uso o que resolve o problema do time. Estas são as que uso hoje com profundidade suficiente para responder pelo que escrevo.

Frontend
TypeScriptReactNext.jsTailwindSSR
Backend
Node.jsFastifyExpressPythonDjango/DRFC#.NET
Dados
PostgreSQLSQL ServerOraclePrisma
Infra e integração
DockerJenkinsKeycloakJWTAPIs RESTVercel
Domínio
Smart GridAMIDLMS/COSEMRF MeshObservabilidadeSistemas distribuídos
05Contato

Vamos conversar

O jeito mais rápido de me achar é o LinkedIn — é lá que eu respondo. Se for sobre vaga, manda o contexto do problema junto: o que quebra hoje, o que precisa existir e o que já tentaram. Isso economiza umas duas reuniões.

remoto ou híbridodisponível para conversas