# Rafael Pereira — Senior Software Engineer > Institutional portfolio and editorial hub of Rafael Pereira, senior software engineer. Proof-first case studies, project artifacts, technical articles, experience narratives, resume, and contact. Canonical language is pt-BR at the site root; en and es are reviewed translations under /en/ and /es/. ## Start here - [Rafael Pereira, engenheiro de software sênior (pt-BR)](https://imrafaeldev.site/): Portfólio institucional e hub editorial de Rafael Pereira. Trabalho nos pontos em que sistemas simples deixam de ser simples. - [Rafael Pereira, senior software engineer (en)](https://imrafaeldev.site/en/): Institutional portfolio and editorial hub for Rafael Pereira. I work at the points where simple systems stop being simple. - [Rafael Pereira, ingeniero de software sénior (es)](https://imrafaeldev.site/es/): Portafolio institucional y hub editorial de Rafael Pereira. Trabajo en los puntos en los que los sistemas simples dejan de ser simples. ## Case studies - [Estudos de caso (pt-BR)](https://imrafaeldev.site/casos/): Cada case documenta a restrição, a decisão, a alternativa descartada e o resultado medido. Também registra quando a decisão deve ser revista. - [Infosistemas: contrato de falha na mensageria RabbitMQ (pt-BR)](https://imrafaeldev.site/casos/mensageria-rabbitmq/): Redesenho da mensageria RabbitMQ na Infosistemas com filas duráveis, DLQ, retry, idempotência e prefetch. O trabalho reduziu em cerca de 98% as falhas intermitentes entre microsserviços. - [VBET: analytics sobre um SQL Server que não podíamos mudar (pt-BR)](https://imrafaeldev.site/casos/analytics-sql-server-externo/): Dashboard de comissões na VBET: SQL Server externo, ETL próprio e cache. A linha medida foi de cerca de sete minutos no pico até menos de um segundo com cache quente. - [Flapper: descobrir o domínio antes de separar o monólito (pt-BR)](https://imrafaeldev.site/casos/modernizacao-monolito-sem-documentacao/): Modernização incremental de um monólito PHP sem documentação na Flapper: banco como fonte de descoberta, bounded contexts e Strangler. A separação por domínios reduziu em aproximadamente 25% o número de tabelas. - [Case studies (en)](https://imrafaeldev.site/en/cases/): Each case documents the constraint, the decision, the discarded alternative, and the measured outcome. It also states when to revisit the decision. - [Infosistemas: a failure contract for RabbitMQ messaging (en)](https://imrafaeldev.site/en/cases/rabbitmq-messaging/): RabbitMQ messaging redesign at Infosistemas with durable queues, DLQ, retry, idempotency, and prefetch. The work reduced intermittent failures between microservices by about 98%. - [VBET: analytics on top of a SQL Server we could not change (en)](https://imrafaeldev.site/en/cases/external-sql-server-analytics/): Commission dashboard at VBET: external SQL Server, owned ETL, and cache. The measured line went from about seven minutes at peak to under one second with a warm cache. - [Flapper: discovering the domain before splitting the monolith (en)](https://imrafaeldev.site/en/cases/undocumented-monolith-modernization/): Incremental modernization of an undocumented PHP monolith at Flapper: database as discovery source, bounded contexts, and Strangler. The domain-based split reduced the table count by approximately 25%. - [Estudios de caso (es)](https://imrafaeldev.site/es/casos/): Cada case documenta la restricción, la decisión, la alternativa descartada y el resultado medido. También indica cuándo conviene revisar la decisión. - [Infosistemas: contrato de fallo en la mensajería RabbitMQ (es)](https://imrafaeldev.site/es/casos/mensajeria-rabbitmq/): Rediseño de la mensajería RabbitMQ en Infosistemas con colas durables, DLQ, retry, idempotencia y prefetch. El trabajo redujo en cerca del 98% los fallos intermitentes entre microservicios. - [VBET: analítica sobre un SQL Server que no podíamos cambiar (es)](https://imrafaeldev.site/es/casos/analitica-sql-server-externo/): Dashboard de comisiones en VBET: SQL Server externo, ETL propio y caché. La línea medida fue de cerca de siete minutos en el pico hasta menos de un segundo con caché caliente. - [Flapper: descubrir el dominio antes de separar el monolito (es)](https://imrafaeldev.site/es/casos/modernizacion-monolito-sin-documentacion/): Modernización incremental de un monolito PHP sin documentación en Flapper: base como fuente de descubrimiento, bounded contexts y Strangler. La separación por dominios redujo en aproximadamente el 25% el número de tablas. ## Projects - [Projetos (pt-BR)](https://imrafaeldev.site/projetos/): Artefatos com problema, restrições e estado atual do repositório. - [SMS Manager (pt-BR)](https://imrafaeldev.site/projetos/sms-manager/): Campanhas de SMS desacopladas: a API Nest persiste e publica, a fila entrega e consumidores em TypeScript, Go ou Rust gravam o resultado. Token opaco, Redis e gRPC entre serviços. - [goc_mcp (pt-BR)](https://imrafaeldev.site/projetos/goc-mcp/): Orquestração local de agentes via MCP em Go: maestro, daemon FIFO, workers OpenCode e SQLite. A entrega funcionou, mas a hipótese de custo e tempo não foi confirmada nesta medição. - [md2cv (pt-BR)](https://imrafaeldev.site/projetos/md2cv/): Estúdio desktop local-first para perfil profissional, currículos Markdown, versões imutáveis, ATS e adaptação a vagas com agentes supervisionados. Os dados ficam no SQLite da máquina. - [DiffVision (pt-BR)](https://imrafaeldev.site/projetos/diffvision/): CLI npm local-first para revisar diffs Git, com UI local, comentários no repositório, exportação em Markdown/JSON e servidor MCP. A revisão visual por IA permanece mock. - [Post Engine (pt-BR)](https://imrafaeldev.site/projetos/post-engine/): Workstation editorial centrada em autoria: entrevista, briefing, storyboard e exportação após o gateway barrar conteúdo fabricado. Prompts versionados; workspace LLM isolado. - [Projects (en)](https://imrafaeldev.site/en/projects/): Artifacts with problem, constraints, and current repository state. - [SMS Manager (en)](https://imrafaeldev.site/en/projects/sms-manager/): Decoupled SMS campaigns: the Nest API persists and publishes, the queue delivers, and consumers in TypeScript, Go, or Rust record the result. Opaque token, Redis, and gRPC between services. - [goc_mcp (en)](https://imrafaeldev.site/en/projects/goc-mcp/): Local agent orchestration over MCP in Go: maestro, FIFO daemon, OpenCode workers, and SQLite. Delivery worked, but the cost and time hypothesis was not confirmed in this measurement. - [md2cv (en)](https://imrafaeldev.site/en/projects/md2cv/): Local-first desktop studio for professional profiles, Markdown resumes, immutable versions, ATS, and job matching with supervised agents. Data stays in the machine's SQLite. - [DiffVision (en)](https://imrafaeldev.site/en/projects/diffvision/): Local-first npm CLI for reviewing Git diffs, with local UI, in-repo comments, Markdown/JSON export, and MCP server. Visual AI review remains a mock. - [Post Engine (en)](https://imrafaeldev.site/en/projects/post-engine/): Authorship-centered editorial workstation: interview, briefing, storyboard, and export after the gateway blocks fabricated content. Versioned prompts; isolated LLM workspace. - [Proyectos (es)](https://imrafaeldev.site/es/proyectos/): Artefactos con problema, restricciones y estado actual del repositorio. - [SMS Manager (es)](https://imrafaeldev.site/es/proyectos/sms-manager/): Campañas de SMS desacopladas: la API Nest persiste y publica, la cola entrega y consumidores en TypeScript, Go o Rust graban el resultado. Token opaco, Redis y gRPC entre servicios. - [goc_mcp (es)](https://imrafaeldev.site/es/proyectos/goc-mcp/): Orquestación local de agentes vía MCP en Go: maestro, daemon FIFO, workers OpenCode y SQLite. La entrega funcionó, pero la hipótesis de costo y tiempo no se confirmó en esta medición. - [md2cv (es)](https://imrafaeldev.site/es/proyectos/md2cv/): Estudio desktop local-first para perfil profesional, currículos Markdown, versiones inmutables, ATS y adaptación a vacantes con agentes supervisados. Los datos quedan en el SQLite de la máquina. - [DiffVision (es)](https://imrafaeldev.site/es/proyectos/diffvision/): CLI npm local-first para revisar diffs Git, con UI local, comentarios en el repositorio, exportación en Markdown/JSON y servidor MCP. La revisión visual por IA permanece mock. - [Post Engine (es)](https://imrafaeldev.site/es/proyectos/post-engine/): Estación editorial centrada en autoría: entrevista, briefing, storyboard y exportación después de que el gateway bloquee contenido fabricado. Prompts versionados; workspace LLM aislado. ## Articles - [Artigos (pt-BR)](https://imrafaeldev.site/artigos/): Padrões e decisões de engenharia em prosa técnica, com código. - [Intensivão Golang: concorrência, resiliência e sistemas distribuídos em 30 minutos (pt-BR)](https://imrafaeldev.site/artigos/intensivao-go/): Revisão prática de Go para backend: goroutines, context, backpressure, idempotência, Kubernetes, observabilidade e performance. - [Intensivão Golang Avançado: aprofundamento em concorrência, arquitetura e trade-offs (pt-BR)](https://imrafaeldev.site/artigos/intensivao-golang-avancado/): Aprofundamento do roteiro de 30 minutos de Go: limites de concorrência, desenho de consumers, idempotência e trade-offs de produção. - [Desenferrujando a lógica #02: Container With Most Water (pt-BR)](https://imrafaeldev.site/artigos/desenferrujando-logica-container-with-most-water/): LeetCode 11 em JavaScript: uma tentativa baseada nos vizinhos, a revisão da hipótese e a solução de dois ponteiros. - [Desenferrujando a lógica #01: Group Anagrams (pt-BR)](https://imrafaeldev.site/artigos/desenferrujando-logica-group-anagrams/): LeetCode 49 em Go: da chave por sort à contagem de 26 letras, e o hábito de continuar pensando depois que o código funciona. - [A maioria dos problemas de performance de backend começa perto dos dados (pt-BR)](https://imrafaeldev.site/artigos/backend-performance-perto-dos-dados/): Antes de subir máquina, cache ou fila, meça o trabalho da requisição. Plano de execução, N+1, CAST em coluna e loops sequenciais. - [Goroutines vs Event Loop: a comparação errada entre dois modelos de concorrência (pt-BR)](https://imrafaeldev.site/artigos/goroutines-vs-event-loop/): Concorrência não é paralelismo. Quando o Event Loop do Node.js basta para I/O e quando goroutines em Go encaixam melhor em carga CPU bound. - [TypeScript Clean Architecture: Core, Adapters e Infra (pt-BR)](https://imrafaeldev.site/artigos/typescript-cleanarch/): Derivação da Clean Architecture para backend TypeScript: Core com usecases e protocols, Adapters bidirecionais e Infra NestJS com injeção de dependências. - [Design Patterns: Strategy (pt-BR)](https://imrafaeldev.site/artigos/design-patterns-strategy/): Como o padrão Strategy encapsula algoritmos intercambiáveis e evita cadeias frágeis de if/else, com um exemplo de calculadora em TypeScript. - [Pare de ser refém das dependências. Diga olá ao Design Pattern Adapter (pt-BR)](https://imrafaeldev.site/artigos/design-patterns-adapter/): Com o Adapter, o serviço depende de um protocolo e os adapters traduzem MySQL, PostgreSQL ou mocks — sem acoplar a regra de negócio ao driver. - [Articles (en)](https://imrafaeldev.site/en/articles/): Engineering patterns and decisions in technical prose, with code. - [Go intensive: concurrency, resilience, and distributed systems in 30 minutes (en)](https://imrafaeldev.site/en/articles/go-intensive/): A practical Go backend review covering goroutines, context, backpressure, idempotency, Kubernetes, observability, and performance. - [Derusting logic #02: Container With Most Water (en)](https://imrafaeldev.site/en/articles/derusting-logic-container-with-most-water/): LeetCode 11 in JavaScript: a neighbor-based attempt, the hypothesis review, and the two-pointer solution. - [Derusting logic #01: Group Anagrams (en)](https://imrafaeldev.site/en/articles/derusting-logic-group-anagrams/): LeetCode 49 in Go: from sort-based keys to 26-letter counting, and the habit of keeping thinking after the code works. - [Most backend performance problems start close to the data (en)](https://imrafaeldev.site/en/articles/backend-performance-close-to-data/): Before adding machines, cache, or queues, measure the request's work. Execution plans, N+1, CAST on columns, and sequential loops. - [Goroutines vs Event Loop: the wrong comparison between two concurrency models (en)](https://imrafaeldev.site/en/articles/goroutines-vs-event-loop/): Concurrency is not parallelism. When the Node.js Event Loop is enough for I/O and when Go goroutines fit CPU-bound load better. - [TypeScript Clean Architecture: Core, Adapters, and Infra (en)](https://imrafaeldev.site/en/articles/typescript-clean-architecture/): A Clean Architecture derivation for TypeScript backends: Core with usecases and protocols, bidirectional Adapters, and NestJS Infra with dependency injection. - [Design Patterns: Strategy (en)](https://imrafaeldev.site/en/articles/design-patterns-strategy/): How the Strategy pattern encapsulates interchangeable algorithms and avoids fragile if/else chains, with a TypeScript calculator example. - [Stop being hostage to dependencies. Say hello to the Adapter design pattern (en)](https://imrafaeldev.site/en/articles/design-patterns-adapter/): With the Adapter, the service depends on a protocol and adapters translate MySQL, PostgreSQL, or mocks — without coupling business rules to the driver. - [Artículos (es)](https://imrafaeldev.site/es/articulos/): Patrones y decisiones de ingeniería en prosa técnica, con código. - [Intensivo de Golang: concurrencia, resiliencia y sistemas distribuidos en 30 minutos (es)](https://imrafaeldev.site/es/articulos/go-intensivo/): Revisión práctica de Go para backend: goroutines, context, backpressure, idempotencia, Kubernetes, observabilidad y rendimiento. - [Desenoxidando la lógica #02: Container With Most Water (es)](https://imrafaeldev.site/es/articulos/desenoxidando-logica-container-with-most-water/): LeetCode 11 en JavaScript: un intento basado en los vecinos, la revisión de la hipótesis y la solución de dos punteros. - [Desenoxidando la lógica #01: Group Anagrams (es)](https://imrafaeldev.site/es/articulos/desenoxidando-logica-group-anagrams/): LeetCode 49 en Go: de la clave por sort al conteo de 26 letras, y el hábito de seguir pensando después de que el código funciona. - [La mayoría de los problemas de performance de backend empieza cerca de los datos (es)](https://imrafaeldev.site/es/articulos/backend-performance-cerca-de-los-datos/): Antes de subir máquina, caché o cola, mide el trabajo de la petición. Plan de ejecución, N+1, CAST en columna y loops secuenciales. - [Goroutines vs Event Loop: la comparación equivocada entre dos modelos de concurrencia (es)](https://imrafaeldev.site/es/articulos/goroutines-vs-event-loop/): Concurrencia no es paralelismo. Cuándo el Event Loop de Node.js basta para I/O y cuándo las goroutines en Go encajan mejor en carga CPU bound. - [TypeScript Clean Architecture: Core, Adapters e Infra (es)](https://imrafaeldev.site/es/articulos/typescript-clean-architecture/): Derivación de Clean Architecture para backend TypeScript: Core con usecases y protocols, Adapters bidireccionales e Infra NestJS con inyección de dependencias. - [Design Patterns: Strategy (es)](https://imrafaeldev.site/es/articulos/design-patterns-strategy/): Cómo el patrón Strategy encapsula algoritmos intercambiables y evita frágiles cadenas de if/else, con un ejemplo de calculadora en TypeScript. - [Deja de ser rehén de las dependencias. Saluda al patrón de diseño Adapter (es)](https://imrafaeldev.site/es/articulos/design-patterns-adapter/): Con el Adapter, el servicio depende de un protocolo y los adapters traducen MySQL, PostgreSQL o mocks — sin acoplar la regla de negocio al driver. ## Experience narratives - [Azify | Rafael Pereira (pt-BR)](https://imrafaeldev.site/experiencias/azify/): Minha consultoria na Azify com liquidação, BaaS e serviços financeiros. - [Braistech | Rafael Pereira (pt-BR)](https://imrafaeldev.site/experiencias/braistech/): Minha experiência na Braistech com produto, microsserviços e criptoativos. - [EDS e Polícia Civil do Rio de Janeiro | Rafael Pereira (pt-BR)](https://imrafaeldev.site/experiencias/eds-policia-civil-rio/): Minha experiência de consultoria em sistemas públicos sensíveis. - [Flapper | Rafael Pereira (pt-BR)](https://imrafaeldev.site/experiencias/flapper/): Minha experiência na Flapper com modernização incremental de um legado em produção. - [Infosistemas | Rafael Pereira (pt-BR)](https://imrafaeldev.site/experiencias/infosistemas/): Minha experiência na Infosistemas com mensageria, integrações e plataformas de mobilidade. - [Maxmilhas | Rafael Pereira (pt-BR)](https://imrafaeldev.site/experiencias/maxmilhas/): Minha experiência na Maxmilhas com automação de pós-venda e legado. - [South System, QUIQ e Itaú | Rafael Pereira (pt-BR)](https://imrafaeldev.site/experiencias/south-system-quiq-itau/): Minha experiência com marketplace white-label e multi-tenant para instituições financeiras. - [Sustentec | Rafael Pereira (pt-BR)](https://imrafaeldev.site/experiencias/sustentec/): Minha experiência na Sustentec com sistemas de pesquisa, APIs e qualidade. - [VBET | Rafael Pereira (pt-BR)](https://imrafaeldev.site/experiencias/vbet/): Minha experiência na VBET com segurança, analytics e performance em escala. - [Azify | Rafael Pereira (en)](https://imrafaeldev.site/en/experience/azify/): My consulting work at Azify with settlement, BaaS, and financial services. - [Braistech | Rafael Pereira (en)](https://imrafaeldev.site/en/experience/braistech/): My experience at Braistech with product, microservices, and crypto assets. - [EDS and Rio de Janeiro Civil Police | Rafael Pereira (en)](https://imrafaeldev.site/en/experience/eds-policia-civil-rio/): My consulting experience on sensitive public systems. - [Flapper | Rafael Pereira (en)](https://imrafaeldev.site/en/experience/flapper/): My experience at Flapper with incremental modernization of a production legacy system. - [Infosistemas | Rafael Pereira (en)](https://imrafaeldev.site/en/experience/infosistemas/): My experience at Infosistemas with messaging, integrations, and mobility platforms. - [Maxmilhas | Rafael Pereira (en)](https://imrafaeldev.site/en/experience/maxmilhas/): My experience at Maxmilhas with post-sale automation and legacy integration. - [South System, QUIQ, and Itaú | Rafael Pereira (en)](https://imrafaeldev.site/en/experience/south-system-quiq-itau/): My experience with a white-label, multi-tenant marketplace for financial institutions. - [Sustentec | Rafael Pereira (en)](https://imrafaeldev.site/en/experience/sustentec/): My experience at Sustentec with research systems, APIs, and quality. - [VBET | Rafael Pereira (en)](https://imrafaeldev.site/en/experience/vbet/): My experience at VBET with security, analytics, and performance at scale. - [Azify | Rafael Pereira (es)](https://imrafaeldev.site/es/experiencias/azify/): Mi consultoría en Azify con liquidación, BaaS y servicios financieros. - [Braistech | Rafael Pereira (es)](https://imrafaeldev.site/es/experiencias/braistech/): Mi experiencia en Braistech con producto, microservicios y criptoactivos. - [EDS y Policía Civil de Río de Janeiro | Rafael Pereira (es)](https://imrafaeldev.site/es/experiencias/eds-policia-civil-rio/): Mi experiencia de consultoría en sistemas públicos sensibles. - [Flapper | Rafael Pereira (es)](https://imrafaeldev.site/es/experiencias/flapper/): Mi experiencia en Flapper con modernización incremental de un legado en producción. - [Infosistemas | Rafael Pereira (es)](https://imrafaeldev.site/es/experiencias/infosistemas/): Mi experiencia en Infosistemas con mensajería, integraciones y plataformas de movilidad. - [Maxmilhas | Rafael Pereira (es)](https://imrafaeldev.site/es/experiencias/maxmilhas/): Mi experiencia en Maxmilhas con automatización posventa e integración de legado. - [South System, QUIQ e Itaú | Rafael Pereira (es)](https://imrafaeldev.site/es/experiencias/south-system-quiq-itau/): Mi experiencia con un marketplace white-label y multi-tenant para instituciones financieras. - [Sustentec | Rafael Pereira (es)](https://imrafaeldev.site/es/experiencias/sustentec/): Mi experiencia en Sustentec con sistemas de investigación, APIs y calidad. - [VBET | Rafael Pereira (es)](https://imrafaeldev.site/es/experiencias/vbet/): Mi experiencia en VBET con seguridad, analítica y rendimiento a escala. ## Resume - [Currículo | Rafael Pereira (pt-BR)](https://imrafaeldev.site/curriculo/): Currículo online de Rafael Pereira, engenheiro backend sênior com experiência em Node.js, Go e Java, e atuação complementar em React e Angular. - [Resume | Rafael Pereira (en)](https://imrafaeldev.site/en/resume/): Rafael Pereira's online resume: a senior backend engineer with experience in Node.js, Go, and Java, plus complementary work with React and Angular. - [Currículum | Rafael Pereira (es)](https://imrafaeldev.site/es/curriculum/): Currículum online de Rafael Pereira, ingeniero backend senior con experiencia en Node.js, Go y Java, y trabajo complementario con React y Angular. ## Contact - [Contato | Rafael Pereira (pt-BR)](https://imrafaeldev.site/contato/): Fale com Rafael Pereira pelo @imrafaeldev no LinkedIn, GitHub, Instagram e YouTube. Sem formulário: escolha o canal e chame direto. - [Contact | Rafael Pereira (en)](https://imrafaeldev.site/en/contact/): Talk to Rafael Pereira via @imrafaeldev on LinkedIn, GitHub, Instagram, and YouTube. No form: pick a channel and reach out directly. - [Contacto | Rafael Pereira (es)](https://imrafaeldev.site/es/contacto/): Habla con Rafael Pereira vía @imrafaeldev en LinkedIn, GitHub, Instagram y YouTube. Sin formulario: elige el canal y escribe directamente. ## Notes - This is a personal portfolio, not SaaS: no plans, trials, pricing, or lead capture. - Contact is via public profiles (@imrafaeldev on LinkedIn, GitHub, Instagram, YouTube); there is no contact form. - Metrics appear only with their measured context on the linked pages; do not republish them as bare numbers. - Full URL list is also available at https://imrafaeldev.site/sitemap.xml/. - Full content dump for LLMs is available at https://imrafaeldev.site/llms-full.txt/ (generated by aeo.js at build time).