{"site":"https://www.zanoni.dev.br","name":"Felipe Zanoni da Rosa","generated_at":"2026-10-19T16:05:50.528Z","headline":"Felipe Zanoni da Rosa","subtitle":"Engenheiro de Software","about":"Sou Felipe Zanoni, Software Engineer com experiência em desenvolvimento backend, automação e integração de sistemas. Trabalhei em ambientes corporativos de Indústria 4.0 (TMD Friction) e em desenvolvimento full stack (Sage Networks), sempre com foco em Python, Linux, Docker e boas práticas de engenharia de software.\r\n\r\nAtualmente curso Ciência da Computação na UNIFEI e atuo como Software Engineer no time Black Bee Drones, desenvolvendo sistemas para drones autônomos com ROS e visão computacional. Gosto de projetos que unem código bem estruturado com problemas reais — de automação de processos industriais a sistemas embarcados de missão crítica.\r\n\r\nSou natural de Salto, SP, e hoje moro em Itajubá, MG, onde estudo. Fora do código, gosto de jogar games, cozinhar nas horas livres, colecionar perfumes e jogar truco, poker e outros jogos de carta.","services":"**Desenvolvimento Web**\r\nCriação de sites institucionais e aplicações web sob medida, do planejamento ao deploy.\r\n\r\n**Automação de Processos**\r\nScripts e sistemas para automatizar tarefas repetitivas, reduzindo trabalho manual e erros.\r\n\r\n**Backend & APIs**\r\nDesenvolvimento de APIs e sistemas backend robustos, com foco em performance e boas práticas.\r\n\r\n**Desenvolvimento de Software**\r\nProjeto e desenvolvimento de sistemas e aplicações completas — além de scripts simples, com arquitetura, testes e manutenibilidade em mente.\r\n\r\n**Consultoria em Infraestrutura**\r\nConfiguração e otimização de ambientes de desenvolvimento e produção, adaptados à necessidade de cada projeto.","availability":"disponível para novos projetos","contact":{"email":"fezarosa@gmail.com","phone":"+55 (11) 94377-2412","github":"https://github.com/fezarosa-dev","linkedin":"https://www.linkedin.com/in/felipe-zanoni/","other_links":[{"label":"Instagram","url":"https://www.instagram.com/fezarosa_/"},{"label":"Linkedin","url":"www.linkedin.com/in/felipe-zanoni"},{"label":"WhatsApp","url":"https://wa.me/5511943772412"},{"label":"fezarosa@gmail.com","url":"mailto:fezarosa@gmail.com"},{"label":"+55 (11) 94377-2412","url":"tel:+5511943772412"}],"page":"https://www.zanoni.dev.br/pt/contato"},"resume":{"content_md":"# Felipe Zanoni da Rosa\r\n**Software Engineer**\r\n\r\nItajubá – MG, Brasil | +55 (11) 94377-2412 | fezarosa@gmail.com\r\n[zanoni.dev.br](https://zanoni.dev.br) | [linkedin.com/in/felipe-zanoni](https://linkedin.com/in/felipe-zanoni) | [github.com/fezarosa-dev](https://github.com/fezarosa-dev)\r\n\r\n---\r\n\r\n## Resumo Profissional\r\n\r\nSoftware Engineer com experiência prática em desenvolvimento full stack, automação e integração de sistemas, transitando entre backend, frontend e infraestrutura em ambientes Linux. Atuação em projetos de Indústria 4.0, sistemas robóticos autônomos (ROS2) e soluções orientadas a dados, com domínio de Python, Rust, TypeScript e Docker. Foco em soluções escaláveis, qualidade de código, automação de processos e melhoria contínua.\r\n\r\n---\r\n\r\n## Experiência Profissional\r\n\r\n### Engenheiro de Software – Black Bee Drones\r\n*Mai 2026 – Set 2026*\r\n\r\n- Desenvolvimento de sistemas de software para drones autônomos em aplicações competitivas, utilizando ROS2 e Python em ambientes Linux;\r\n- Arquitetura de máquina de estados finita (YASMIN) para missões autônomas, incluindo decolagem, cobertura de área, detecção de alvos e pouso;\r\n- Desenvolvimento e treinamento de modelos de visão computacional (YOLO/Ultralytics) e pipelines com OpenCV para detecção de alvos, desacoplados do hardware para testes isolados;\r\n- Colaboração com equipes de engenharia multidisciplinares para pesquisar, implementar e documentar soluções de software para competições e apresentações técnicas;\r\n- Uso de Git para controle de versão e gestão de projetos de software em ambiente de desenvolvimento colaborativo.\r\n\r\n### Desenvolvedor Full Stack – Sage Networks\r\n*Nov 2025 – Mar 2026*\r\n\r\n- Construção de pipeline de dados em Rust (Parquet, Arrow e DuckDB embarcado) para auditoria de redundância de conectividade BGP entre Pontos de Troca de Tráfego;\r\n- Desenvolvimento de pipeline híbrido em Python e Cython para geolocalização de tráfego de rede em escala, dentro de SLA de 5 minutos;\r\n- Manutenção e evolução de sistema de autenticação próprio com 2FA por e-mail, tokens JWT, recuperação de senha e isolamento multi-tenant entre clientes;\r\n- Engenharia reversa de banco de dados de plataforma de terceiros, sem API ou documentação, para construção de sistema de análise de produtividade;\r\n- Desenvolvimento de nova aba de suporte no painel do cliente (Angular) e liderança de padronização e modularização de componentes;\r\n- Desenvolvimento de APIs REST e aplicações backend em Python, com versionamento em Git e containerização em Docker;\r\n- Correção de bugs, otimização de performance e documentação técnica de funcionalidades e processos.\r\n\r\n### Trainee de Projetos Indústria 4.0 – TMD Friction\r\n*Jul 2025 – Nov 2025*\r\n\r\n- Liderança de projeto de integração entre sistema de chão de fábrica (ProLeiT) e ERP (TOTVS), apresentado à diretoria, para eliminar registro manual de consumo de matéria-prima e reduzir divergências fiscais;\r\n- Identificação da causa raiz: ausência de validação automática (poka-yoke) entre o consumo digitado manualmente e os valores reais medidos pelas balanças, distorcendo o cálculo de backflush do TOTVS;\r\n- Proposta de arquitetura de integração automática com validações poka-yoke (bloqueio de lote inválido, peso fora do padrão), garantindo rastreabilidade de lotes em tempo real;\r\n- Desenvolvimento de dashboards e KPIs em Excel (Power Query, Power Pivot, tabelas dinâmicas, fórmulas complexas) para análise de dados operacionais e de negócio;\r\n- Mapeamento de processos produtivos para identificação de riscos e pontos de falha técnica antes de gerarem problemas em produção;\r\n- Uso avançado de sistemas ERP, MES e PCS; documentação técnica de projetos e apresentações.\r\n\r\n### Aprendiz de Comércio Exterior – TMD Friction\r\n*Ago 2024 – Jul 2025*\r\n\r\n- Automação com VBA de envio de e-mails, relatórios e geração automática de PDFs, usando o próprio Excel como banco de dados em ambiente sem possibilidade de instalação de novas ferramentas;\r\n- Implementação de validações poka-yoke em planilhas críticas, conferindo automaticamente valores digitados contra cálculos de referência e reduzindo tarefas de horas para minutos;\r\n- Automação de cobrança de envio de documentos junto a fornecedores e áreas internas, eliminando acompanhamento manual;\r\n- Análise de fretes, gestão de cotações, regimes tarifários especiais e processamento de notas fiscais para aprovação financeira.\r\n\r\n### Desenvolvedor Web e Engenheiro de Automação – Freelancer\r\n*2023 – 2024*\r\n\r\n- Desenvolvimento de aplicações web e automações sob medida, com soluções ponta a ponta seguindo boas práticas de engenharia de software.\r\n\r\n---\r\n\r\n## Projetos\r\n\r\n### IXSonar — Análise de Visibilidade BGP entre Pontos de Troca de Tráfego\r\n- **O quê:** pipeline que audita redundância de conectividade BGP entre Pontos de Troca de Tráfego brasileiros e internacionais a partir de snapshots históricos de rotas.\r\n- **Com quê:** Rust (tokio, reqwest, rayon), Apache Parquet e Arrow para minimizar I/O de disco, DuckDB embarcado para queries SQL, Python (pandas, Flask) para dashboard.\r\n- **Resolve:** gargalo de I/O em datasets massivos e incompletos, permitindo comparar overlap de prefixos e caminho de AS entre IXs sem reprocessar dados a cada consulta.\r\n\r\n### SOVA — Pipeline de Geolocalização de Tráfego em Larga Escala\r\n- **O quê:** pipeline que geolocaliza IPs de origem e destino em dumps de tráfego de rede para alimentar sistema de detecção e mitigação de DDoS.\r\n- **Com quê:** arquitetura híbrida Python e Cython, base MaxMind GeoIP, processamento paralelo.\r\n- **Resolve:** processar milhões de registros com lookup de geolocalização dentro de SLA de 5 minutos, impraticável em Python puro.\r\n\r\n### Heimdall — Sistema de Autenticação e Controle de Acesso\r\n- **O quê:** sistema de autenticação e autorização integrado ao painel do cliente (Asgard), com 2FA, JWT e isolamento multi-tenant.\r\n- **Com quê:** Python, JWT, SQLite, Nginx.\r\n- **Resolve:** controle de acesso granular por plano contratado, com isolamento total de dados entre empresas clientes e papel de administrador consolidado.\r\n\r\n### Asgard — Painel do Cliente\r\n- **O quê:** nova aba de suporte no painel do cliente, com consumo de plano, status de tickets e tempo médio de resposta; padronização e modularização de componentes do projeto.\r\n- **Com quê:** Angular, TypeScript, containers com deploy automatizado.\r\n- **Resolve:** duplicação de padrões de código entre telas e falta de visibilidade do cliente sobre o próprio suporte.\r\n\r\n### Pokedex — Análise de Produtividade e Alocação de Técnicos de Suporte\r\n- **O quê:** sistema que calcula produtividade por técnico e sinaliza desequilíbrios de carga na equipe.\r\n- **Com quê:** Python, SQL direto ao banco, Docker Swarm, Nginx.\r\n- **Resolve:** ausência de API ou documentação na plataforma de suporte de terceiros, exigindo engenharia reversa completa do esquema de banco antes de extrair qualquer métrica.\r\n\r\n### Drone Simulator — Simulador de Voo ROS2\r\n- **O quê:** simulador de quadricóptero com física própria, autopiloto e sensores simulados, rodando a 60 FPS.\r\n- **Com quê:** Python, ROS2, VPython (visualização 3D), NumPy; modelo físico em configuração X com mixagem individual de motor; GPS, IMU e LIDAR publicados como tópicos ROS2 padrão.\r\n- **Resolve:** testar algoritmos de navegação e desvio de obstáculos sem custo ou risco de hardware físico.\r\n\r\n### BlackBee Challenge 2026 — Mapeamento Aéreo Autônomo\r\n- **O quê:** sistema de mapeamento aéreo autônomo com detecção de alvos e projeção de coordenada GPS real.\r\n- **Com quê:** Python, ROS2/rclpy, YASMIN (máquina de estados finita), OpenCV e YOLO/Ultralytics (pipelines de detecção intercambiáveis), MAVROS/MAVLink, Gazebo.\r\n- **Resolve:** cobertura de área, detecção e geolocalização de alvos de forma autônoma; inclui correção de erro de física óptica que alterou o algoritmo de cobertura de 6 para 8 waypoints, e deduplicação de alvos em fotos sobrepostas.\r\n\r\n### Portfólio Pessoal — Site e Painel Administrativo\r\n- **O quê:** site de portfólio full stack com CMS próprio, suporte bilíngue nativo e autenticação.\r\n- **Com quê:** Next.js 16 (App Router), React 19, TypeScript, Supabase (Postgres + Auth), Google Drive API, testes unitários.\r\n- **Resolve:** gestão de conteúdo (projetos, artigos, currículo, mensagens) sem depender de CMS externo, com detecção automática de idioma via middleware.\r\n\r\n### Moodle Chat Bot — Assistente de Programação em C\r\n- **O quê:** extensão de navegador que transforma o chat do Moodle em compilador e tutor de C interativo com IA.\r\n- **Com quê:** JavaScript (Manifest V3), Python/Flask, GCC, Google Gemini API, DuckDB.\r\n- **Resolve:** compilar, executar e depurar código C (com suporte a scanf em tempo real) direto do chat da disciplina, com inferência automática de headers e fallback entre modelos de IA.\r\n\r\n### Electrolysis App — Simulador de Eletrolisador PEM\r\n- **O quê:** aplicativo desktop que simula um eletrolisador PEM ao longo de 24 horas, calculando produção de H2/O2, consumo de água, calor gerado e potência elétrica a partir de um perfil de carga configurável.\r\n- **Com quê:** C# / .NET com Avalonia UI, LiveChartsCore e SkiaSharp para gráficos interativos, exportação de relatórios em CSV e imagem.\r\n- **Resolve:** simulação de cenários de energia solar intermitente com modelo físico do eletrolisador (Lei de Faraday, eficiência de célula, perdas térmicas), recalculado em tempo real.\r\n\r\n---\r\n\r\n## Formação Acadêmica\r\n\r\n- **Bacharelado em Ciência da Computação** – Universidade Federal de Itajubá (UNIFEI), Campus Prof. José Rodrigues Seabra – 2026 – Previsão de Formatura: 2029;\r\n- **Técnico em Informática para Internet** (Integrado ao Ensino Médio) – Instituto Federal de Educação, Ciência e Tecnologia de São Paulo (IFSP) – 2023 a 2025.\r\n\r\n---\r\n\r\n## Idiomas\r\n\r\nInglês – Avançado | Português – Nativo\r\n\r\n---\r\n\r\n## Habilidades Técnicas\r\n\r\n- **Linguagens e Scripting:** Python, Rust, JavaScript, TypeScript, Java, C#, SQL, Bash Script, HTML/CSS/SCSS, VBA\r\n- **Sistemas e Infraestrutura:** Linux (ambientes de servidor), Docker e Docker Swarm, Nginx, ROS2\r\n- **Desenvolvimento de Software:** Git/GitHub, estruturas de dados, testes unitários, ciclo de vida de desenvolvimento (SDLC)\r\n- **Automação e IA Aplicada:** Automação em Python com LLMs hospedados localmente, integração de LLMs com arquivos offline, visão computacional (OpenCV/YOLO)\r\n- **Dados e BI:** Power BI, Excel Avançado (Power Query, Power Pivot, tabelas dinâmicas, fórmulas complexas), VBA para automação de relatórios\r\n- **Metodologias:** Metodologias Ágeis, Clean Code\r\n\r\n---\r\n\r\n## Treinamentos e Certificações Adicionais\r\n\r\n- Docker Completo – Jan 2025\r\n- Git e GitHub – Jun 2023\r\n- Python Essentials 1 e 2 – 2023/2025\r\n- Python 3 – 2022–2023\r\n- Defesa de Redes – Abr 2025\r\n- Excel Avançado – Abr 2025","links":[{"label":"Download - EN","url":"https://docs.google.com/document/d/1CYHk6t-I1D1vMSkaWIs1RXZukacTCiPr1_jkE_Ht_14/edit?usp=sharing"},{"label":"Baixar - PT","url":"https://docs.google.com/document/d/1gaWBLVdjhkcmq8kdD0hJKEG0VFPCqdpRSZstJiLtVTI/edit?usp=sharing"}],"page":"https://www.zanoni.dev.br/pt/curriculo"},"projects":[{"title":"SOVA — Pipeline de Geolocalização de Tráfego em Larga Escala","summary":"Pipeline híbrido em Python e Cython que processa milhões de registros de tráfego de rede em tempo real, geolocalizando IPs para alimentar um sistema de detecção e mitigação de DDoS.","description":"### O que é\r\nPipeline de processamento de dados de tráfego de rede (NetFlow dumps) em larga escala, usado como insumo para um sistema de detecção e mitigação de ataques DDoS. Para cada registro de tráfego, o sistema resolve a geolocalização dos IPs de origem e destino e entrega dados limpos e estruturados para consumo por outros sistemas.\r\n\r\n### Desafio\r\nProcessar milhões de linhas de dados de tráfego dentro de uma janela de até 5 minutos, sob restrições rígidas de tempo e memória. Além do volume, cada linha exigia um lookup de geolocalização de IP, o que tornava o processamento em Python puro inviável dentro do SLA exigido.\r\n\r\n### Solução\r\n- Arquitetura híbrida com **Python** como orquestrador (controle de fluxo, agregação e formatação dos dados) e **Cython** para acelerar os trechos críticos — tanto no parsing dos dumps de NetFlow quanto no lookup de geolocalização.\r\n- Uso da base **MaxMind GeoIP** para resolver a geolocalização de IPs de origem e destino em escala.\r\n- Processamento paralelo para lidar com o volume de dados dentro da janela de tempo disponível, mantendo o uso de memória sob controle.\r\n- Limpeza e padronização dos dados de saída, gerando datasets estruturados usados posteriormente para alimentar presets do sistema anti-DDoS.\r\n\r\n### Resultado\r\nPipeline capaz de processar grandes volumes de tráfego de rede dentro do SLA de tempo exigido, fornecendo dados geolocalizados e limpos como base para decisões automatizadas de mitigação de ataques.\r\n\r\n### Stack técnica\r\n- Python\r\n- Cython\r\n- MaxMind GeoIP\r\n- SQLite\r\n- Processamento paralelo / multiprocessing\r\n\r\n### Destaques técnicos\r\n- Otimização de trechos críticos com Cython para atingir performance próxima de C em Python\r\n- Lookup de geolocalização de IP em escala (milhões de registros) dentro de janela de tempo restrita\r\n- Processamento paralelo para equilibrar velocidade e uso de memória\r\n- Pipeline de limpeza e padronização de dados para consumo por sistemas downstream de segurança","technologies":["Python","Docker","Git","SQLite","Cython"],"coauthors":[],"company":"Sage Networks","repo_url":null,"site_url":null,"page":"https://www.zanoni.dev.br/pt/projetos/sova"},{"title":"IXSonar — Análise de Visibilidade BGP entre Pontos de Troca de Tráfego","summary":"Pipeline de dados em Rust que audita, em escala, a redundância de conectividade entre diferentes Pontos de Troca de Tráfego (IXs) brasileiros e internacionais, a partir de snapshots históricos de rotas BGP coletados pelo RouteViews. O objetivo era responder a uma pergunta prática: vale a pena um provedor investir em conectividade física de longa distância até um IX principal, como o de São Paulo, ou a maior parte dos prefixos já está replicada em IXs regionais mais próximos? Lidando com um volume massivo de dados incompletos e inconsistentes, e com o gargalo real sendo I/O de disco e não CPU, o pipeline combina Rust, Parquet, Arrow e DuckDB para processar tudo com o mínimo de leitura/escrita possível, entregando um dashboard histórico que embasa essa decisão com dados reais.","description":"### O que é\r\nFerramenta de análise de redes que compara a visibilidade de rotas BGP entre múltiplos Pontos de Troca de Tráfego (IXs) — por exemplo, diferentes praças do IX.br, além de alguns IXs internacionais para comparação. Responde a perguntas como: quais prefixos anunciados em um IX também aparecem em outro? Quantos mantêm o mesmo caminho de AS nos dois locais? Como essa cobertura varia entre CDNs, provedores de acesso, bancos e órgãos de governo?\r\n\r\nO objetivo prático por trás da análise é mostrar que, na maioria dos casos, não vale a pena um provedor investir em conectividade física de longa distância até um IX distante (por exemplo, ligar um cabo até o IX de São Paulo quando se está em Fortaleza) porque grande parte dos prefixos e redes disponíveis em um IX principal já está replicada nos IXs regionais. O resultado é um dashboard histórico que ajuda times de rede a tomar essa decisão com dados reais, entendendo a redundância de conectividade entre localidades.\r\n\r\n### Desafio\r\nOs dados vêm do RouteViews (University of Oregon), que coleta snapshots (RIBs) de roteadores em diversos pontos do mundo — mas nem todos os IXs têm cobertura completa: há datas e horários com falhas específicas de captura, dependendo do roteador de origem. Os arquivos vinham com dados faltando, formatação inconsistente entre snapshots e um volume absurdo de informação para processar. O maior desafio técnico foi encontrar uma forma de processar esse volume com o mínimo possível de I/O de disco e a maior velocidade possível, já que o gargalo real não era CPU, era leitura/escrita.\r\n\r\n### Solução\r\n- Binário em **Rust** que baixa automaticamente os snapshots (RIBs) do RouteViews, testando múltiplos dias em paralelo até localizar um arquivo válido, e aplica filtros configuráveis de inclusão/exclusão sobre AS-PATH e comunidades BGP.\r\n- Uso de **Apache Parquet** como formato intermediário — arquivos colunares, imutáveis e com resumo estatístico embutido, escolhidos por reduzirem drasticamente o volume de I/O de disco comparado a alternativas como SQLite.\r\n- Uso de **Apache Arrow** para trafegar os dados diretamente em memória (RAM) entre as etapas do pipeline, evitando serialização/desserialização desnecessária em disco.\r\n- **DuckDB** embarcado para comparar pares de IXs — overlap de prefixos, consistência de caminho de AS e métricas por categoria de rede — processando as dimensões global, IPv4 e IPv6 em paralelo, tudo via SQL direto sobre os arquivos Parquet.\r\n- Scripts em **Python** que leem os resultados finais e geram um dashboard HTML autocontido com gráficos interativos, servido por um pequeno servidor Flask.\r\n\r\n### Resultado\r\nPipeline completo — da coleta de dados brutos até a visualização final — capaz de processar grandes volumes de dados BGP de forma eficiente em disco e memória, entregando visibilidade histórica sobre a redundância de conectividade entre IXs brasileiros e internacionais.\r\n\r\n### Stack técnica\r\n- Rust (tokio, reqwest, rayon, DuckDB embarcado)\r\n- Python (pandas, matplotlib, Flask)\r\n- Apache Parquet como formato intermediário\r\n- Apache Arrow para transporte de dados em memória\r\n- Google Charts para o dashboard\r\n\r\n### Destaques técnicos\r\n- Download automático e resiliente de RIBs BGP históricas do RouteViews, testando múltiplos dias até achar um snapshot válido\r\n- Tratamento de dados incompletos e com formatação inconsistente entre diferentes coletas/roteadores\r\n- Uso de Parquet + Arrow para minimizar I/O de disco e maximizar velocidade de processamento em grande volume\r\n- Motor de filtros configurável com lógica AND/OR sobre comunidades BGP e AS-PATH\r\n- Comparação de overlap de rotas feita inteiramente em SQL sobre arquivos Parquet, via DuckDB embarcado\r\n- Processamento paralelo nativo em Rust das três dimensões de análise (global, IPv4, IPv6)\r\n- Classificação de redes por categoria de negócio (CDN, ISP, financeiro, governo) para segmentar a análise","technologies":["DuckDB","Git","Rust","Python","Pandas","Flask"],"coauthors":[],"company":"Sage Networks","repo_url":null,"site_url":null,"page":"https://www.zanoni.dev.br/pt/projetos/ixsonar"},{"title":"Heimdall — Sistema de Autenticação e Controle de Acesso","summary":"Manutenção e evolução do Heimdall, sistema próprio de autenticação desenvolvido em Python, com verificação em duas etapas via e-mail, uso de tokens JWT, recuperação de senha (\"esqueci minha senha\") e gerenciamento de permissões multi-tenant — controlando o acesso de cada cliente apenas às áreas contratadas em seu plano, isolando completamente o acesso entre diferentes empresas, e mantendo uma conta de administrador com acesso ao painel de todos os clientes. O sistema é integrado ao Asgard, o painel do cliente.","description":"### O que é\r\nHeimdall é o sistema de autenticação e controle de acesso próprio da empresa, integrado ao Asgard (painel do cliente): o Asgard envia requisições de autenticação e autorização para o Heimdall, que valida e responde. Já existia quando entrei no projeto; minha atuação foi de manutenção e aprimoramento contínuo.\r\n\r\n### Minha atuação\r\n- Manutenção e evolução do fluxo de autenticação, incluindo verificação em duas etapas (2FA) via e-mail.\r\n- Trabalho envolvendo uso de tokens JWT para autenticação e controle de sessão.\r\n- Manutenção do fluxo de recuperação de senha (\"esqueci minha senha\").\r\n- Gerenciamento de permissões de acesso a áreas específicas do sistema, vinculado ao plano contratado por cada cliente — impedindo acesso a funcionalidades fora do escopo do contrato.\r\n- Implementação de isolamento multi-tenant: cada empresa cliente só tem acesso ao seu próprio painel, sem qualquer possibilidade de acessar dados ou áreas de outras empresas atendidas pela plataforma.\r\n- Suporte à conta de administrador, com acesso privilegiado ao painel de todos os clientes da plataforma.\r\n- Persistência de usuários em banco SQLite.\r\n- Roteamento das requisições entre Asgard e Heimdall via Nginx.\r\n\r\n### Stack técnica\r\n- Python\r\n- JWT\r\n- Autenticação em duas etapas (e-mail)\r\n- Recuperação de senha\r\n- SQLite\r\n- Nginx\r\n- Controle de acesso multi-tenant com papel de administrador\r\n\r\n### Destaques técnicos\r\n- Uso de tokens JWT para autenticação e controle de sessão\r\n- Autenticação em duas etapas via e-mail\r\n- Fluxo de recuperação de senha\r\n- Modelo de permissões vinculado a plano contratado, controlando acesso granular por funcionalidade/área\r\n- Isolamento multi-tenant garantindo que uma empresa jamais acesse dados ou telas de outra\r\n- Papel de administrador com visão consolidada de todos os clientes, além do isolamento padrão entre empresas\r\n- Persistência de usuários em SQLite\r\n- Nginx como camada de roteamento entre o Asgard (frontend) e o Heimdall (serviço de autenticação)\r\n- Integração direta com o Asgard como camada de autenticação e autorização","technologies":["Python","Docker","Git","SQLite","Nginx"],"coauthors":[],"company":"Sage Networks","repo_url":null,"site_url":"https://cliente.sagenetworks.com.br/","page":"https://www.zanoni.dev.br/pt/projetos/heimdall"},{"title":"fuelCellPem — Simulador de Célula a Combustível PEM","summary":"Aplicativo desktop que simula uma célula a combustível PEM (geração de eletricidade a partir de hidrogênio) ao longo de 24 horas, permitindo que engenheiros e estudantes visualizem de forma interativa quanto hidrogênio é consumido, quanta água e calor são produzidos e qual a eficiência da célula — tudo a partir de um perfil de uso configurável hora a hora.","description":"# fuelCellPem — Simulador de Célula a Combustível PEM\n\n**Um app desktop que mostra, hora a hora, como uma célula a combustível PEM se comporta ao longo de um dia de uso.**\n\n## O que é\n\nAplicativo desktop que simula uma célula a combustível PEM (Proton Exchange Membrane) ao longo de 24 horas. O usuário informa as características do stack e um perfil de carga diário, e o app mostra de forma interativa quanto hidrogênio é consumido, quanta água é produzida, quanto calor é gerado, qual a eficiência da célula e quanta energia ela entrega — com totais diários, mensais e anuais.\n\nÉ a evolução natural do Electrolysis App: enquanto aquele simula a produção de hidrogênio, este simula o caminho inverso, transformando hidrogênio de volta em eletricidade.\n\n## Como funciona\n\nO usuário configura os parâmetros do stack e desenha o perfil de uso arrastando as barras diretamente no gráfico (ou digitando o valor exato), com atalhos prontos para perfis típicos, como 24 horas contínuas ou apenas as horas de sol. A cada mudança, o app recalcula a operação hora a hora a partir do modelo físico da célula e atualiza gráficos, médias e totais em tempo real. Os campos de entrada validam os valores digitados e avisam quando algo é inválido, e a interface oferece desfazer/refazer, importação e exportação das entradas em JSON e exportação dos resultados completos em PDF.\n\nO modelo foi portado de um notebook Python de referência e validado contra ele de forma sistemática: um conjunto de testes automatizados compara as saídas do app com as do notebook em uma ampla variedade de cenários, incluindo casos extremos e entradas absurdas, garantindo que nada quebre ou produza resultados inválidos.\n\n## Stack técnica\n\n- C# / .NET com Avalonia UI (desktop multiplataforma)\n- Gráficos interativos e exportação de relatórios em PDF\n- xUnit para testes automatizados (incluindo testes da interface em modo headless)\n- Python + SciPy para gerar os dados de referência usados na validação\n- Git e GitHub Actions para integração contínua e publicação de releases\n\n## Destaques técnicos\n\n- Migração fiel de um modelo científico de Python para C#, com paridade verificada contra a implementação original\n- Validação em larga escala contra a referência, cobrindo grandes combinações de parâmetros\n- Robustez de entrada: aceita vírgula ou ponto como separador decimal, rejeita valores inválidos e protege contra estouro numérico e laços infinitos\n- Importação e exportação de JSON com tratamento de erros (arquivo inválido, bloqueado ou grande demais) sem derrubar o app\n- Interface editável por arraste, com desfazer/refazer e exportação de relatório em PDF\n- Código organizado em camadas: modelo físico, dados, interface e testes\n- Pipeline de CI que compila, testa e publica releases automaticamente","technologies":["C#","Jupyter","Git","Google Colab","GitHub Actions","Python"],"coauthors":[{"name":"Juan Felipe Vásquez Uribe","url":"https://www.linkedin.com/in/juan-felipe-vasquez-u/"}],"company":"Freelancer","repo_url":null,"site_url":null,"page":"https://www.zanoni.dev.br/pt/projetos/fuelcellpem"},{"title":"Pokedex — Análise de Produtividade e Alocação de Técnicos de Suporte","summary":"Sistema em Python desenvolvido para dar visibilidade sobre a operação de uma equipe de técnicos de infraestrutura e redes, que atendiam chamados de clientes através de uma plataforma de suporte de terceiros. O maior desafio não estava na lógica de negócio, e sim no acesso aos dados: não havia API disponível, apenas acesso direto ao banco, sem documentação sobre como as tabelas se relacionavam — foi preciso fazer engenharia reversa do esquema, lidando com dados incompletos e sem padrão de formatação. A partir dessa base tratada, o sistema calcula produtividade por técnico, monitora a distribuição de chamados e cruza esses números com a disponibilidade real da equipe para sinalizar desequilíbrios de carga. Tudo apresentado em dashboards visuais, rodando em produção sobre um cluster Docker Swarm com Nginx como reverse proxy.","description":"### O que é\r\nSistema desenvolvido em Python que acessa diretamente o banco de dados de uma plataforma de suporte ao cliente de terceiros, usada por técnicos de infraestrutura e redes (contratados para atender e resolver chamados de clientes). Sem API ou documentação disponível, o objetivo era transformar esses dados brutos em indicadores de produtividade e apoiar a gestão da equipe de suporte.\r\n\r\n### Desafio\r\nNão havia API ou qualquer forma estruturada de acessar os dados — apenas acesso direto ao servidor e ao banco de dados da plataforma. A estrutura era inconsistente, com dados sujos, incompletos e sem documentação sobre como as tabelas se relacionavam. Foi necessário fazer engenharia reversa do esquema do banco antes mesmo de começar a extrair qualquer métrica confiável de produtividade e alocação.\r\n\r\n### Solução\r\n- Engenharia reversa da estrutura do banco de dados da plataforma de suporte, mapeando tabelas e relacionamentos sem documentação disponível.\r\n- Conexão e queries SQL diretas ao banco para extração dos dados de chamados e atendimentos.\r\n- Tratamento e limpeza de dados inconsistentes/incompletos em Python antes do cálculo de métricas.\r\n- Processamento para calcular indicadores de produtividade por técnico (volume de chamados, tempo de resolução, esforço estimado).\r\n- Geração de relatórios e dashboards visuais para acompanhamento da distribuição de tarefas entre a equipe.\r\n- Lógica de apoio à alocação, cruzando volume de trabalho com a disponibilidade de cada técnico, sinalizando desequilíbrios de carga.\r\n\r\n### Resultado\r\nFerramenta que deu visibilidade à gestão sobre a produtividade real da equipe de suporte e ajudou a equilibrar a distribuição de chamados entre os técnicos, considerando a capacidade e disponibilidade de cada um — mesmo partindo de uma fonte de dados sem estrutura clara ou documentação.\r\n\r\n### Stack técnica\r\n- Python\r\n- SQL (acesso direto a banco de dados)\r\n- Processamento e limpeza de dados\r\n- Geração de dashboards/relatórios\r\n- Docker Swarm\r\n- Nginx\r\n\r\n### Destaques técnicos\r\n- Engenharia reversa de esquema de banco de dados sem documentação\r\n- Extração de dados via SQL direto, sem API disponível\r\n- Tratamento de dados inconsistentes e incompletos como parte central do pipeline\r\n- Cálculo de métricas de produtividade e esforço a partir de dados brutos de atendimento\r\n- Dashboard visual para acompanhamento da equipe\r\n- Lógica de alocação considerando disponibilidade individual dos técnicos\r\n- Deploy em cluster Docker Swarm com Nginx como reverse proxy","technologies":["Python","Docker","Git","Nginx","MySQL"],"coauthors":[],"company":"Sage Networks","repo_url":null,"site_url":null,"page":"https://www.zanoni.dev.br/pt/projetos/pokedex"},{"title":"Asgard — Painel do Cliente","summary":"Painel do cliente da empresa, construído em Angular, no qual atuei desenvolvendo uma nova aba de suporte — mostrando ao cliente o consumo do plano contratado, status dos tickets (abertos, encerrados, aguardando resposta de cada lado) e tempo médio de resposta, tanto do cliente quanto da equipe. Também liderei um trabalho de padronização e modularização de componentes e do sistema de cores, reduzindo retrabalho da equipe e melhorando a performance e a manutenibilidade do projeto. A aplicação roda em containers com pipeline de deploy automatizado.","description":"### O que é\r\nAsgard é o painel do cliente da empresa — a interface onde os clientes acompanham suas informações e estatísticas de conta. É uma aplicação inteira em Angular, executada em containers, com pipeline de deploy automatizado.\r\n\r\n### Minha atuação\r\nNão desenvolvi a aplicação do zero; entrei em um projeto já existente e atuei em frentes específicas:\r\n- Desenvolvimento de uma nova aba de suporte no painel, dando ao cliente visibilidade sobre:\r\n  - Consumo do plano de suporte contratado (quanto já foi utilizado da cota disponível);\r\n  - Quantidade de tickets abertos e encerrados;\r\n  - Tickets aguardando resposta do cliente e tickets aguardando resposta da equipe;\r\n  - Tempo médio de resposta do cliente e tempo médio de resposta da equipe.\r\n- Padronização do projeto: identifiquei que desenvolvedores repetiam manualmente os mesmos padrões de código em diferentes telas, e criei uma estrutura padronizada para eliminar esse retrabalho.\r\n- Modularização de páginas e componentes, tornando o código mais reutilizável e fácil de manter.\r\n- Reestruturação do sistema de cores, unificando o uso em todo o projeto.\r\n- Melhorias de performance no frontend a partir dessas mudanças de estrutura.\r\n\r\n### Stack técnica\r\n- Angular\r\n- TypeScript\r\n- Containers (deploy)\r\n- Pipeline de deploy automatizado\r\n\r\n### Destaques técnicos\r\n- Modularização de componentes e páginas para reduzir duplicação de código\r\n- Padronização de sistema de cores e estilos em toda a aplicação\r\n- Ganhos de performance no frontend decorrentes da reestruturação\r\n- Trabalho em cima de uma base de código já existente, sem quebrar funcionalidades ativas","technologies":["Docker","Git","TypeScript","Nginx","MySQL","Angular"],"coauthors":[],"company":"Sage Networks","repo_url":null,"site_url":"https://cliente.sagenetworks.com.br/","page":"https://www.zanoni.dev.br/pt/projetos/asgard"},{"title":"Moodle Chat Bot — Assistente de Programação em C no Chat do Moodle","summary":"Uma extensão de navegador (Chrome/Firefox) que monitora o chat de mensagens do Moodle e o transforma em um assistente acadêmico de programação em C. Direto do chat da disciplina, é possível compilar e rodar código C, interagir com o programa em execução (inclusive fornecer entradas via `scanf`), pedir para uma IA explicar erros ou corrigir bugs, e manter um histórico de conversas e execuções anteriores — tudo sem sair da interface do curso.","description":"# Moodle Chat Bot — Assistente de Programação em C no Chat do Moodle\r\n\r\n**Uma extensão de navegador que transforma o chat do Moodle em um compilador e tutor de C com IA.**\r\n\r\n## O que é\r\n\r\nUma extensão de navegador (Chrome/Firefox) que monitora o chat de mensagens do Moodle e o transforma em um assistente acadêmico de programação em C. Direto do chat da disciplina, é possível compilar e rodar código C, interagir com o programa em execução (inclusive fornecer entradas via `scanf`), pedir para uma IA explicar erros ou corrigir bugs, e manter um histórico de conversas e execuções anteriores — tudo sem sair da interface do curso.\r\n\r\n## Como funciona\r\n\r\nUm content script injetado na página do Moodle observa o chat em busca de comandos que começam com `!`, enviados por um usuário autorizado. Cada comando é repassado para um backend local em Flask, que roteia a mensagem: se for código C, ele é compilado com GCC e executado em um subprocesso, com um sistema de filas e threads para capturar saída em tempo real e detectar quando o programa está esperando entrada do usuário. Se for uma pergunta, a mensagem — junto com o contexto de execuções anteriores escolhido pelo usuário — é enviada para a IA do Google Gemini, com fallback automático entre modelos em caso de limite de cota. Todo o histórico de mensagens, respostas e execuções fica salvo em um banco DuckDB local.\r\n\r\n## Stack técnica\r\n\r\n- JavaScript (extensão de navegador, Manifest V3)\r\n- Python + Flask (backend local)\r\n- Google Gemini API\r\n- DuckDB para persistência\r\n- GCC para compilação e execução de C\r\n\r\n## Destaques técnicos\r\n\r\n- Runner de C interativo, com suporte a `scanf` em tempo real através de um \"timer de silêncio\" que decide quando entregar a saída ao usuário\r\n- Inferência automática de `#include`: quando o chat do Moodle corrompe símbolos como `#`, o bot reconhece as funções usadas (`printf`, `malloc`, `sqrt`...) e injeta os headers corretos\r\n- Sistema de contexto para a IA com granularidade fina — desde \"última execução\" até um ID específico de conversa, com regras sobre incluir só a pergunta, só a resposta, ou ambas\r\n- Fallback em cascata entre modelos Gemini para contornar limites de cota gratuita\r\n- Arquitetura em camadas no backend (rotas, execução, IA, inferência de headers, banco de dados), mantendo cada responsabilidade isolada","technologies":["Firefox Extensions","Git","JavaScript","Python","Flask","DuckDB"],"coauthors":[],"company":"Projeto pessoal","repo_url":"https://github.com/fezarosa-dev/moodleChat","site_url":null,"page":"https://www.zanoni.dev.br/pt/projetos/moodle-chat-bot"},{"title":"BlackBee Challenge - 2026 - Missão 1 - Mapeamento","summary":"Projeto desenvolvido para a Missão 1 do Black Bee Challenge, uma competição de robótica aérea autônoma. O objetivo: um drone decola sem intervenção humana do centro de uma arena de 14x14 metros, varre toda a área seguindo um plano de voo em grade, localiza até 5 \"bases\" (alvos no chão com formas e números), fotografa cada uma garantindo que apareça inteira no quadro, calcula sua coordenada GPS e gera um relatório com as fotos como prova — exatamente como exige o regulamento oficial da competição.","description":"# Black Bee Challenge 2026 — Mapeamento Aéreo Autônomo\r\n\r\n**Um drone que decola sozinho, mapeia 100% de uma arena de competição e identifica alvos por conta própria.**\r\n\r\n## O que é\r\n\r\nProjeto desenvolvido para a Missão 1 do Black Bee Challenge, uma competição de robótica aérea autônoma. O objetivo: um drone decola sem intervenção humana do centro de uma arena de 14x14 metros, varre toda a área seguindo um plano de voo em grade, localiza até 5 \"bases\" (alvos no chão com formas e números), fotografa cada uma garantindo que apareça inteira no quadro, calcula sua coordenada GPS e gera um relatório com as fotos como prova — exatamente como exige o regulamento oficial da competição.\r\n\r\n## Como funciona\r\n\r\nO sistema é uma máquina de estados finita rodando sobre ROS2: decolagem, planejamento da cobertura, captura de fotos em cada waypoint, detecção das bases e pouso. Toda a matemática de geometria de câmera e visão computacional (cálculo do campo de visão, tamanho do quadro fotografado no chão, grade de cobertura, conversão de posição de pixel para coordenada GPS real) fica isolada em módulos independentes do ROS, o que permite testá-los sem precisar de um drone de verdade. A detecção das bases pode ser feita tanto por processamento clássico de imagem (OpenCV) quanto por um modelo YOLO treinado especificamente para esse alvo, trocáveis sem alterar o resto do pipeline.\r\n\r\n## Stack técnica\r\n\r\n- Python + ROS2 (rclpy)\r\n- YASMIN (máquina de estados finita)\r\n- OpenCV e YOLO/Ultralytics para detecção\r\n- MAVROS/MAVLink para controle real do drone\r\n- Gazebo para simulação\r\n\r\n## Destaques técnicos\r\n\r\n- Correção de um erro real de física óptica: o campo de visão da câmera é diagonal, não horizontal — a conversão trigonométrica correta mudou o número de waypoints necessários de 6 para 8\r\n- Algoritmo de cobertura de área verificado numericamente, varrendo uma malha fina de pontos para confirmar 100% de cobertura da arena\r\n- Pipeline de projeção pixel → coordenada GPS em duas etapas, com compensação de inclinação do drone (roll/pitch)\r\n- Deduplicação de alvos detectados em fotos sobrepostas, com composição de mosaico quando nenhuma foto isolada mostra o alvo inteiro\r\n- Configuração de missão inteira centralizada em um único arquivo, com perfis que alternam entre simulação e voo real","technologies":["ROS","Git","Python","OpenCV"],"coauthors":[{"name":"Felipe Barros","url":null}],"company":"Black Bee Drones","repo_url":"https://github.com/Black-Bee-Drones/black-bee-challenge-2026/tree/mapping","site_url":null,"page":"https://www.zanoni.dev.br/pt/projetos/blackbee-challenge"},{"title":"Electrolysis App — Simulador de Eletrolisador PEM","summary":"Aplicativo desktop que simula um eletrolisador PEM (produção de hidrogênio por eletrólise da água) ao longo de 24 horas, permitindo que engenheiros e estudantes visualizem de forma interativa quanto H2 e O2 são produzidos, quanta água é consumida, quanto calor é gerado e qual a potência elétrica exigida — tudo a partir de um perfil de carga configurável, pensado especialmente para cenários de energia solar intermitente.","description":"# Electrolysis App — Simulador de Eletrolisador PEM\r\n\r\n**Um app desktop que mostra, hora a hora, quanto hidrogênio um eletrolisador produz a partir de um perfil de energia solar.**\r\n\r\n## O que é\r\n\r\nAplicativo desktop que simula um eletrolisador PEM (produção de hidrogênio por eletrólise da água) ao longo de 24 horas, permitindo que engenheiros e estudantes visualizem de forma interativa quanto H2 e O2 são produzidos, quanta água é consumida, quanto calor é gerado e qual a potência elétrica exigida — tudo a partir de um perfil de carga configurável, pensado especialmente para cenários de energia solar intermitente.\r\n\r\n## Como funciona\r\n\r\nO usuário desenha o perfil de energia disponível hora a hora arrastando barras diretamente no gráfico (ou digitando o valor exato), com atalhos prontos para perfis típicos, como 24 horas contínuas ou apenas as horas de sol. A cada mudança, o app recalcula a produção horária usando o modelo físico do eletrolisador (Lei de Faraday, eficiência de célula, perdas térmicas) e atualiza os gráficos e os totais diário, mensal e anual em tempo real. Os resultados podem ser exportados em um pacote com gráficos em imagem, dados em CSV e os parâmetros usados na simulação.\r\n\r\n## Stack técnica\r\n\r\n- C# / .NET com Avalonia UI (desktop multiplataforma)\r\n- LiveChartsCore + SkiaSharp para os gráficos\r\n- Exportação de relatórios em CSV e imagem","technologies":["Python","C#","Git","Jupyter","Google Colab","GitHub Actions"],"coauthors":[{"name":"Juan Felipe Vásquez Uribe","url":"https://www.linkedin.com/in/juan-felipe-vasquez-u/"}],"company":"Freelancer","repo_url":null,"site_url":null,"page":"https://www.zanoni.dev.br/pt/projetos/electrolysis-app"},{"title":"Drone Simulator — Simulador de Voo com ROS2","summary":"Um simulador de voo de drone (quadricóptero) construído para testar algoritmos de navegação e desvio de obstáculos sem risco nem custo de hardware físico. O drone virtual decola, navega por um percurso em slalom desviando de obstáculos, pode executar manobras (como um flip) e retorna automaticamente ao ponto de origem para pousar — tudo visualizado em 3D em tempo real.","description":"# Drone Simulator — Simulador de Voo com ROS2\r\n\r\n**Um quadricóptero virtual completo, com física própria e sensores simulados, para testar lógica de autopiloto sem precisar de um drone real.**\r\n\r\n## O que é\r\n\r\nUm simulador de voo de drone (quadricóptero) construído para testar algoritmos de navegação e desvio de obstáculos sem risco nem custo de hardware físico. O drone virtual decola, navega por um percurso em slalom desviando de obstáculos, pode executar manobras (como um flip) e retorna automaticamente ao ponto de origem para pousar — tudo visualizado em 3D em tempo real.\r\n\r\n## Como funciona\r\n\r\nO núcleo é um nó ROS2 rodando a 60 quadros por segundo. A cada frame, um autopiloto (implementado como máquina de estados) decide os comandos de voo — decolagem, navegação, manobra, retorno e pouso — que alimentam um modelo físico simplificado de quadricóptero em configuração X, com mixagem individual de cada motor. O simulador publica dados de GPS, IMU e LIDAR nos mesmos formatos que hardware real usaria em ROS2, permitindo que qualquer sistema externo consuma esses sensores como se estivesse controlando um drone de verdade. A cena é renderizada em 3D com VPython, mostrando o drone, o ambiente e a trilha percorrida.\r\n\r\n## Stack técnica\r\n\r\n- Python 3 + ROS2 (rclpy)\r\n- VPython para visualização 3D\r\n- NumPy para física e cálculo vetorial\r\n\r\n## Destaques técnicos\r\n\r\n- Máquina de estados de voo completa: decolagem, navegação com desvio de obstáculos, manobra, retorno ao ponto de origem e pouso\r\n- Modelo físico de quadricóptero com mixagem individual de motor (throttle, roll, pitch, yaw)\r\n- Sensores simulados (GPS, IMU, LIDAR) publicados como tópicos ROS2 padrão, prontos para serem consumidos por qualquer nó externo\r\n- Detecção de colisão contra obstáculos e limites da arena, encerrando a missão em caso de acidente\r\n- Visualização 3D em tempo real com trilha de voo","technologies":["ROS","Git","Python","NumPy"],"coauthors":[],"company":"Black Bee Drones","repo_url":"https://github.com/fezarosa-dev/droneSimulator","site_url":null,"page":"https://www.zanoni.dev.br/pt/projetos/drone-simulator"},{"title":"Portfólio Pessoal — Site & Painel Administrativo","summary":"Este é o site que você está vendo agora: uma aplicação Next.js construída do zero para apresentar projetos, artigos, currículo e formas de contato — mas com um diferencial: todo o conteúdo é gerenciado por um painel administrativo próprio, sem depender de nenhum CMS externo. Projetos, textos, imagens, tecnologias e mensagens recebidas são editados direto pelo navegador, sem tocar em código ou fazer novo deploy. O site também expõe uma busca híbrida (full-text + IA local, sem custo de API) e um servidor MCP que permite a uma IA ler e editar esse conteúdo sob permissão — foi assim, aliás, que este parágrafo foi escrito.","description":"# Portfólio Pessoal — Site & Painel Administrativo\r\n\r\n**Um site de portfólio que também é uma aplicação full-stack completa, com CMS próprio, autenticação e suporte bilíngue.**\r\n\r\n## O que é\r\n\r\nEste é o site que você está vendo agora: uma aplicação Next.js construída do zero para apresentar projetos, artigos, currículo e formas de contato — mas com um diferencial: todo o conteúdo é gerenciado por um painel administrativo próprio, sem depender de nenhum CMS externo. Projetos, textos, imagens, tecnologias e mensagens recebidas são editados direto pelo navegador, sem tocar em código ou fazer novo deploy.\r\n\r\n## Como funciona\r\n\r\nA aplicação usa o App Router do Next.js com duas grandes áreas: as páginas públicas do site e um `/admin` protegido por autenticação, onde o conteúdo é criado e editado. Os dados vivem no Supabase (Postgres), com um schema versionado por migrations SQL. Um middleware customizado cuida de duas coisas ao mesmo tempo: proteger as rotas administrativas e detectar automaticamente o idioma do visitante (português ou inglês) via cabeçalho do navegador e cookie, servindo o conteúdo já traduzido. As imagens do site são hospedadas no Google Drive e servidas por endpoints próprios, sem expor nenhuma chave de API no cliente.\r\n\r\n## Stack técnica\r\n\r\n- Next.js 16 (App Router) + React 19 + TypeScript\r\n- Tailwind CSS 4 + shadcn/ui + Framer Motion\r\n- Supabase (Postgres + Auth)\r\n- Google Drive API como galeria de imagens\r\n- react-markdown para os artigos do blog\r\n\r\n## Destaques técnicos\r\n\r\n- CMS próprio embutido no admin, cobrindo projetos, artigos, currículo, mensagens de contato e personalização visual do site\r\n- Suporte bilíngue construído sob medida: detecção automática de idioma e campos de conteúdo espelhados (ex.: `hero_title` / `hero_title_en`)\r\n- SEO cuidado desde o início: JSON-LD estruturado, sitemap, robots.txt e Open Graph dinâmico\r\n- Testes unitários cobrindo as partes mais sensíveis do sistema: autenticação, detecção de idioma e processamento de markdown\r\n- Busca híbrida (full-text + IA local) e servidor MCP para edição de conteúdo por uma IA, com permissões granulares\r\n\r\n## Busca híbrida e conexões MCP\r\n\r\nAlém do CMS, o site tem dois diferenciais que vão além do portfólio comum:\r\n\r\n- **Busca híbrida** (`/busca`, atalho ⌘K): combina full-text nativo do Postgres com busca semântica via um modelo de embeddings rodando localmente no servidor (`@huggingface/transformers`, sem custo de API externa), fundindo os dois rankings com Reciprocal Rank Fusion.\r\n- **Servidor MCP** (`/api/mcp`): expõe o conteúdo do site como tools do [Model Context Protocol](https://modelcontextprotocol.io), com permissão de leitura/escrita configurável por recurso e por conexão, criada e gerenciada pelo painel admin. Isso permite que uma IA (como o Claude) leia e edite projetos, artigos, SEO e outros textos do site diretamente, sob controle granular do dono — inclusive este próprio parágrafo foi adicionado usando essa conexão.","technologies":["Git","TypeScript","React","PostgreSQL","JavaScript","Vercel","GitHub Actions","Supabase","Next.js","Tailwind CSS"],"coauthors":[],"company":"Projeto pessoal","repo_url":"https://github.com/fezarosa-dev/portfolio","site_url":"www.zanoni.dev.br","page":"https://www.zanoni.dev.br/pt/projetos/portfolio-pessoal"},{"title":"Integração TOTVS × ProLeiT — Análise de Dados e Automação para a Indústria 4.0","summary":"Projeto de Indústria 4.0 que integrou o ERP (TOTVS) ao sistema MES de chão de fábrica (ProLeiT). Atuei na análise de dados em larga escala, cruzando relatórios com milhões de linhas e os dados do MES para conciliar estoques, identificar falhas de processo e apontar furos de estoque, além de validar uma tela personalizada do ERP e automatizar rotinas com VBA e Power Automate. Os resultados foram levados à diretoria para embasar o andamento do projeto.","description":"### O que é\nProjeto de Indústria 4.0 para integrar o ERP da empresa (**TOTVS**) ao sistema MES de chão de fábrica (**ProLeiT**). A ideia era fazer os dois sistemas conversarem, reduzindo lançamentos manuais e as divergências que apareciam entre o que acontecia na produção e o que constava no ERP.\n\n### Desafio\nO volume de dados era o maior obstáculo. Os relatórios do TOTVS tinham milhões de linhas, precisavam ser cruzados com outros relatórios igualmente grandes e, depois, com os dados vindos do MES. Era necessário conciliar estoques, encontrar onde os processos falhavam e identificar furos de estoque, tudo isso em um ambiente corporativo, usando as ferramentas já disponíveis na empresa.\n\n### Minha atuação\n- Análise e comparação de grandes volumes de dados, cruzando relatórios do ERP com dados do MES para validar consistência e conciliar estoques.\n- Identificação de falhas de processo e de furos de estoque a partir dessas comparações.\n- Construção de modelos e análises em **Excel avançado**: Power Query para tratar e combinar as bases, Power Pivot para modelar os dados, tabelas dinâmicas, KPIs, Solver e fórmulas complexas com índice e busca.\n- Automação de rotinas com **VBA** e com **Microsoft Power Automate**, incluindo o preenchimento automático de informações que antes eram feitas na mão.\n- Leitura do código de uma tela personalizada do TOTVS, desenvolvida por uma empresa terceirizada, para identificar possíveis falhas antes de ela entrar em uso.\n- Participação em reuniões com a diretoria para apresentar os resultados e discutir o andamento do projeto.\n- Uso intenso do TOTVS no dia a dia para extração e conferência dos dados.\n\n### Resultado\nVisibilidade sobre as divergências entre produção e ERP, com análises que embasaram as decisões da diretoria sobre o rumo da integração, e rotinas manuais substituídas por automações.\n\n### Stack técnica\n- Excel avançado (Power Query, Power Pivot, tabelas dinâmicas, KPIs, Solver)\n- VBA\n- Microsoft Power Automate\n- TOTVS (ERP)\n- ProLeiT (MES)\n\n### Destaques técnicos\n- Cruzamento de relatórios com milhões de linhas entre ERP e MES\n- Modelagem de dados com Power Query e Power Pivot para bases grandes\n- Conciliação de estoques e detecção de furos a partir da comparação entre sistemas\n- Automações em VBA e Power Automate para eliminar preenchimento manual\n- Revisão de código de uma tela personalizada de um ERP, feita por terceiros\n- Apresentação de resultados técnicos para a diretoria","technologies":["Excel","VBA","Power Automate"],"coauthors":[],"company":"TMD Friction do Brasil","repo_url":null,"site_url":null,"page":"https://www.zanoni.dev.br/pt/projetos/integracao-totvs-proleit"},{"title":"Mão Dupla — Extensão Chrome para Gerenciar Seguidores no Instagram","summary":"Extensão open source para Chrome (Manifest V3) que mostra, a partir da conta do próprio usuário, quem ele segue e não é seguido de volta, quem deixou de seguir e quem chegou, com fila de follow/unfollow com pausas. Roda 100% local, sem servidor e sem senha. Desenvolvida com o auxílio do Claude AI.","description":"# Mão Dupla — Extensão Chrome para Gerenciar Seguidores no Instagram\n\n**Uma extensão open source que mostra quem não te segue de volta e acompanha o que mudou entre uma atualização e outra.**\n\n### O que é\nExtensão para Chrome (Manifest V3), que também funciona em Edge e Brave. A partir da conta do próprio usuário no Instagram, mostra quem ele segue e não é seguido de volta, quem deixou de seguir, quem chegou e quem saiu do \"seguindo\". Permite seguir e deixar de seguir direto da lista, um a um ou em fila. Projeto open source (licença MIT), com a versão 2.0.0 publicada e o instalador em .zip na página de Releases.\n\n### Como funciona\nA extensão injeta funções na aba do Instagram em que o usuário já está logado, via `chrome.scripting`, e consome a API interna do site imitando as requisições dele. Tudo roda localmente no navegador: não há servidor, não pede senha e não envia dados para ninguém. As listas ficam em cache local e cada atualização é comparada com a anterior, o que permite mostrar as mudanças ao longo do tempo.\n\n### Funcionalidades\n- Carregamento das listas em tempo real, com barra de progresso, e comparação de cada atualização com a anterior.\n- Conferência direta no Instagram dos alertas de \"saiu\", antes de mostrá-los, para evitar falsos positivos.\n- Fila de follow e de unfollow com pausa aleatória entre as ações. A fila para sozinha e trava por 6 horas se o Instagram limitar a conta.\n- Exportação e importação de tudo em .zip (JSON completo mais um CSV por aba), para levar os dados de um computador para outro.\n- Interface própria: barra lateral, cards com foto e selo de verificado, busca e paginação configurável.\n- Acessibilidade: foco visível por teclado, rótulos para leitores de tela e suporte a \"reduzir movimento\".\n\n### Stack técnica\n- JavaScript puro, sem dependências nem build\n- Chrome Extensions (Manifest V3) e `chrome.scripting`\n- localStorage para o cache local\n- GitHub Actions para o release automatizado\n\n### Destaques técnicos\n- Escrevi do zero o gerador e o leitor de .zip, incluindo o cálculo de CRC32, sem usar bibliotecas\n- Reaproveitamento da sessão já aberta no navegador, sem guardar cookies, tokens ou senhas\n- Validação dos dados na importação, descartando links de foto que não sejam do Instagram\n- Verificação de cada alerta suspeito direto no Instagram para eliminar falsos positivos\n- Fila com pausa aleatória e trava automática quando o Instagram limita a conta\n- Release automático: ao criar uma tag, o workflow confere a versão do manifesto, empacota o zip e publica a release\n\n### Como foi feito\nDesenvolvido por mim com o auxílio do Claude AI, que me ajudou a investigar o funcionamento do site, escrever e testar o código.\n","technologies":["JavaScript","Chrome Extensions","GitHub Actions","Git"],"coauthors":[],"company":"Projeto pessoal","repo_url":"https://github.com/fezarosa-dev/mao-dupla","site_url":null,"page":"https://www.zanoni.dev.br/pt/projetos/mao-dupla"}],"articles":[]}