Do chamado de suporte ao código que resolve o problema
Uma trajetória construída na prática: diagnosticar sistemas em produção e, cada vez mais, programar as soluções.
Atuação atual
Suporte a Sistemas ERP
Base do dia a dia
SQL & MySQL em produção
Desenvolvimento pessoal
Java, Spring Boot & Angular
Construo aplicações web full-stack: APIs REST com Spring Boot, Spring Security e JWT, modelagem de persistência com Spring Data JPA e Hibernate, e interfaces com Angular e React — este portfólio é um dos ambientes onde pratico isso.
Tenho projetos próprios publicados no GitHub que vão de uma API de classificação fiscal com machine learning em produção a uma plataforma de gestão rural full-stack, além de experimentos e estudos.
Minha trajetória inclui atuação como Analista de Suporte de Sistemas ERP, investigando bases MySQL diariamente: encontrar a consulta que explica um saldo errado, identificar cadastros inconsistentes e corrigir falhas antes que virem um problema para o cliente.
Esse contato diário com bancos de dados reais e chamados de produção foi o que me levou a programar: comecei construindo as ferramentas que eu gostaria de ter no suporte, e de lá para aplicações completas.
Estou cursando Engenharia de Software na UniBras Centro Universitário, conciliando os estudos com o desenvolvimento de projetos pessoais publicados no GitHub.
Engenharia de Software — UniBras Centro Universitário · janeiro de 2026 — dezembro de 2028 (Em andamento)
Experiência profissional
Trajetória
A experiência registrada publicamente no LinkedIn de Rodrigo — atuação direta com suporte a sistemas ERP.
início da carreira registrada
Analista de Suporte de Sistemas ERP (Mantenedor de Sistemas)
Atual
Brazil Software
novembro de 2024 — atual São Luís de Montes Belos, GO
Suporte técnico a usuários de sistema ERP, com atuação direta em banco de dados MySQL e na estabilidade dos módulos em produção.
Diagnóstico e resolução de incidentes relacionados aos módulos do sistema ERP.
Execução de consultas e atualizações SQL diretamente no banco de dados MySQL.
Identificação de inconsistências cadastrais e correção de falhas que impactam as operações dos clientes.
Prestação de suporte remoto e homologação de soluções antes da liberação aos usuários.
Acompanhamento de chamados e orientação aos usuários, garantindo a continuidade das operações.
SQL
MySQL
Suporte ERP
Diagnóstico de Sistemas
Atendimento Remoto
hoje
Competências
Tecnologias por contexto de uso
Cada tecnologia mostra onde ela é aplicada de fato — para não confundir prática profissional com aprendizado em andamento.
Uso profissional — Aplicado diariamente no trabalho
Projetos reais — Usado em projetos pessoais publicados
Em estudo — Aprendizado ativo, ainda não profissional
Backend
Construção de APIs e regras de negócio em Java, praticadas nos projetos pessoais.
Java
Spring Boot
Spring Security
Spring Data JPA
Hibernate
APIs REST
JWT
Frontend
HTML, CSS e JavaScript aplicados em projetos reais; Angular e TypeScript em estudo, praticados neste portfólio.
JavaScript
HTML
CSS
Angular
TypeScript
Tailwind CSS
Banco de Dados
Uso profissional diário no suporte ERP, além da modelagem de persistência em projetos próprios.
SQL
MySQL
Ferramentas & Infraestrutura
Versionamento, integrações de API e publicação dos próprios projetos.
Git
GitHub
Integração de APIs
Deploy (VPS)
Suporte & Sistemas ERP
A base da atuação profissional atual de Rodrigo.
Sistemas ERP
Diagnóstico de erros
Manutenção de sistemas
Correção de inconsistências de dados
Suporte a usuários
Projeto principal · estudo de caso
NexusDemy
Gerenciador de aulas e grade horária, multi-tenant, para escolas.
Contexto
Escolas que organizam grade horária, presença e comunicação com professores em planilhas soltas acumulam conflitos de horário, ausência de histórico de frequência e retrabalho manual toda vez que um período letivo muda. NexusDemy nasceu como resposta a esse problema: um sistema único que uma escola pode assinar, configurar com seus próprios professores, turmas e salas, e operar sem depender de terceiros para montar a grade.
Problema resolvido
Montar e manter a grade horária de uma escola manualmente, sem visibilidade de conflitos, sem controle de presença centralizado e sem forma simples de compartilhar a grade com pais, alunos e professores.
Grade horária com criação manual por arrastar-e-soltar e detecção de conflitos em tempo real
Gerador automático de grade (algoritmo guloso/greedy) que distribui aulas entre os dias respeitando disponibilidade e carga horária dos professores
Chamada e controle de presença por aula, com histórico e relatório de frequência
Cadastro de alunos com importação via CSV e vínculo com turmas
Modelos de grade: salvar um snapshot da grade atual e restaurar em outro período
Calendário acadêmico com semestres, feriados e eventos do ano letivo
Configuração de disponibilidade semanal e carga horária máxima por professor
Arquitetura (backend)
src/main/java/.../gerenciador/
├─controller/Camada HTTP REST — 25 controllers expondo os recursos da API.
├─service/Regras de negócio da aplicação, em 18+ services.
├─repository/Acesso a dados via Spring Data JPA.
├─model/19 entidades JPA que representam o domínio acadêmico.
├─dto/Objetos de transferência entre API e frontend.
├─enums/Role, TipoAlerta, DiaSemana, Turno e demais domínios fechados.
├─security/Autenticação JWT, filtros e o TenantContext do multi-tenancy.
├─exception/Tratamento global de exceções da API.
Multi-tenancy: Cada entidade carrega uma coluna instituicao_id. O TenantContext extrai a instituição a partir do JWT autenticado e todas as consultas são automaticamente filtradas por tenant — cada escola enxerga apenas os próprios dados.
Stack técnica
BackendSpring Boot 4.0 · Java 21
SegurançaSpring Security · JWT (JJWT)
PersistênciaSpring Data JPA · Hibernate · MySQL 8
PDFOpenPDF (fork LGPL do iText 5)
PagamentosAPI Asaas
E-mailJavaMailSender (SMTP) · API Brevo
FrontendHTML5 · CSS3 · JavaScript (Vanilla)
GráficosChart.js
BuildMaven (com Maven Wrapper)
Papéis e permissões
SUPER_ADMINGerencia instituições, usuários e configurações da plataforma; pode impersonar uma escola.
ESCOLA_ADMINConfigura grade, aulas, professores, turmas, alunos e chamadas da própria escola.
VISUALIZADORAcesso somente leitura à grade e aos relatórios, incluindo exportação em PDF.
Desafios técnicos
Isolar dados de múltiplas escolas em um único banco (multi-tenant por coluna) sem vazar informação entre instituições em nenhuma consulta.
Gerar uma grade horária automaticamente respeitando restrições reais — disponibilidade do professor, carga horária máxima e ausência de conflitos — com um algoritmo guloso.
Permitir acesso público a uma grade específica (link por turma) sem expor autenticação nem dados de outras turmas ou escolas.
Deixar a configuração de e-mail (SMTP ou Brevo) inteiramente no painel administrativo, sem exigir reinício da aplicação para aplicar mudanças.
Aprendizados
Aplicar multi-tenancy de forma consistente em todas as camadas — da entidade ao filtro de segurança — em vez de tratar isolamento de dados como um detalhe de query isolado.
Desenhar um algoritmo de geração de grade que precisa equilibrar múltiplas restrições ao mesmo tempo, não apenas evitar conflitos óbvios.
Integrar um provedor de pagamento (Asaas) e seus webhooks a um fluxo de assinatura com trial, upgrade e expiração.
Estruturar uma SPA em JavaScript vanilla organizada por módulo, sem framework, mantendo o código legível conforme o número de telas cresceu.
Spring Boot 4.0 · Java 21
Spring Security · JWT (JJWT)
Spring Data JPA · Hibernate · MySQL 8
OpenPDF (fork LGPL do iText 5)
API Asaas
JavaMailSender (SMTP) · API Brevo
HTML5 · CSS3 · JavaScript (Vanilla)
Chart.js
Maven (com Maven Wrapper)
Projetos com pesos diferentes de propósito: alguns são produtos pessoais reais, outros são estudos e experimentos deliberadamente menores.
Projeto principal
APi-NCM
API de classificação fiscal (NCM) com machine learning, em produção.
Gateway Java/Spring Boot que expõe o endpoint GET /api/ncm/consultar, autenticado por header X-API-Key e hospedado em produção em apiNcm.rodrigo-dev.com.br. Recebe a descrição textual de um produto e devolve o código NCM mais provável, com alternativas e probabilidade, repassando a inferência para um microsserviço de machine learning próprio (ncm-service), que substitui a dependência de um Space do Hugging Face por infraestrutura própria.
Serviço comercial em produção — repositório privado, código não é público.
Endpoint GET /api/ncm/consultar autenticado por header X-API-Key
Hospedado em produção em apiNcm.rodrigo-dev.com.br
Modelo de classificação (TensorFlow/Keras) treinado sobre a tabela NCM, servido por um microsserviço Python/FastAPI próprio (ncm-service)
Frontend React (Vite) consumindo a API, configurado como PWA instalável em iOS e Android (tela-ncm)
Java
Spring Boot
Python
FastAPI
TensorFlow
Keras
React
Vite
PWA
Projeto principal
agrogestao
Plataforma full-stack de gestão para pequenas propriedades rurais.
Plataforma multi-propriedade para gestão rural, com backend em Java 21 + Spring Boot 4.1 (Maven) e frontend em React 19 + TypeScript + Vite + Tailwind CSS, persistindo os dados em MySQL 8. Cobre autenticação, gestão de múltiplas propriedades e os módulos financeiro, estoque, produção, compras, vendas e atividades.
Autenticação e suporte a múltiplas propriedades por usuário
Módulos de financeiro, estoque, produção, compras, vendas e atividades
Backend Java 21 + Spring Boot 4.1 com Maven
Frontend React 19 + TypeScript + Vite + Tailwind CSS
Java 21
Spring Boot 4.1
React 19
TypeScript
Vite
Tailwind CSS
MySQL
Bot de Telegram para venda e gestão de assinaturas de planos.
Integra com meu_painel_web
Bot construído com python-telegram-bot que apresenta planos consultados de uma API externa, recebe comprovantes de pagamento enviados pelos usuários, envia esses comprovantes por e-mail (SMTP) para conferência e usa tarefas agendadas (APScheduler) para rotinas recorrentes. Roda como aplicação Flask, o que permite expor endpoints/webhook junto ao bot.
Consulta de planos disponíveis via API externa e apresentação em botões inline
Recebimento e encaminhamento por e-mail de comprovantes de pagamento enviados no chat
Agendamento de tarefas recorrentes com APScheduler
Integração direta com a API do painel administrativo (meu_painel_web)
Painel administrativo web para o bot de assinaturas.
Integra com meu-bot-telegram
Aplicação Flask com login por sessão que expõe um dashboard com métricas de usuários e assinaturas ativas, histórico de assinaturas e CRUD de planos, persistindo os dados em SQLite. Funciona como a contraparte administrativa do meu-bot-telegram, consumida por ele via API.
Login de administrador protegido por sessão
Dashboard com total de usuários ativos, assinaturas ativas e novas assinaturas nos últimos 7 dias
Histórico de assinaturas e gestão de planos (criar/editar)
Persistência em SQLite com migrações simples feitas em código (adição incremental de colunas)
Estudo de modelagem JPA/Hibernate com Spring Boot.
Projeto de estudo com domínio de e-commerce (usuários, produtos, categorias, pedidos, itens de pedido e pagamento), usado para exercitar relacionamentos JPA, chave composta (OrderItemPK), tratamento global de exceções e testes com H2/PostgreSQL.
Entidades com relacionamento many-to-many via chave composta (Order/Product → OrderItem)
Camada de tratamento de exceções (ResourceNotFoundException, DataBaseException)
Perfis de banco separados para teste (H2) e produção (PostgreSQL)
Java 21
Spring Boot 4
Spring Data JPA
H2
PostgreSQL
Controlador de jogo por visão computacional, via gestos da mão.
Projeto acadêmico em equipe (UniBras, com os colegas Kaiky Ferreira e Nicole Carol): a webcam captura vídeo, OpenCV e MediaPipe detectam os landmarks da mão e classificam gestos, que são convertidos em teclas via pynput para controlar um jogo/emulador.
Em andamento — projeto acadêmico em equipe (UniBras).
Detecção de landmarks da mão com MediaPipe a partir do vídeo da webcam
Classificação de gestos e conversão em teclas simuladas via pynput
Projeto em equipe (UniBras) com Kaiky Ferreira e Nicole Carol
Estrutura inicial de um jogo de xadrez em Java puro.
Estágio inicial de um motor de xadrez em Java, ainda concentrado nas estruturas de dados fundamentais do tabuleiro — sem interface de usuário ou regras de movimento completas até o momento.
Em estágio inicial — estruturas de tabuleiro implementadas, regras de movimento ainda em construção.
Modelagem de Board, Piece e Position como fundação do domínio do jogo
Programa de entrada (Program.java) para evolução incremental das regras