SOFTWARE ENGINEERING PORTFOLIO
Francisco Thiago
Software architect and senior engineer for high-availability, event-driven systems: from the C# code to the Kubernetes cluster it runs on.
I led the design of the global MES platform of the world's largest beer and logistics company, deployed in 300+ breweries and used by 10,000+ people, and I specialize in event sourcing, DDD, Kafka, and modernizing legacy ERP integrations. On my own time I build developer tools and run a home Kubernetes cluster. Those projects are public and verifiable, and this page is served from that cluster by a pipeline I wrote.
Track record
300+breweries running the global MES platform I led, with 10,000+ users
900,000+daily requests handled by a financial-transaction authorization system I designed and scaled
Days → mscustomer-notification latency after re-architecting the engine at a consultancy from the countryside of Paraná
200+Brazilian-built applications enabled by the architectural standards I defined
- Global MES platform. At the world's largest beer and logistics company, led design and delivery of the platform deployed in 300+ breweries worldwide, supporting 10,000+ users and generating significant annual operational savings.
- Architecture standards and Technology Hub. Defined the standards that enabled the creation and internationalization of 200+ Brazilian-built applications and the consolidation of a Brazil-based Technology Hub.
- Fiscal and legal modernization. Modernized the software stack of that company's largest business unit for Brazilian technical regulations and the Tax Reform, integrating with legacy ERP systems, including COBOL and SAP.
- Financial-transaction authorization at scale. Designed and scaled a system that authorizes financial transactions (withdrawals and credits) for 900,000+ daily requests with peak traffic, keeping availability high and latency low, and migrated its mission-critical engine from Go to C# while preserving stability and performance under load.
- Notification engine. At a consultancy from the countryside of Paraná that grew the most in Brazil in recent years, re-architected a customer notification engine, cutting response times from days to milliseconds.
- Leadership and teaching. President of the Technical Committee, leading company-wide certification programs, internal training, and engineering standards. Invited faculty at Unicesumar for undergraduate Software Engineering. Postgraduate Certificate in .NET Solution Architecture, Uniciv (2018).
What I deliver
| For the business | For the engineering team |
|---|---|
| Systems that stay available under load and turn waiting measured in days into milliseconds, with measurable operational savings. | C# and Angular applications, REST APIs, Kafka messaging, and PostgreSQL (including pgvector). |
| Decisions written down as specs and standards, so the next team understands why a system is the way it is, not only what it does. | Event sourcing, DDD, and hexagonal architecture; static analysis (Roslyn, TypeScript Compiler API); contracts enforced by JSON Schema. |
Delivery treated as part of the product: every merge to main is tested, versioned, released, and deployed automatically. |
Kubernetes (k3s), Argo CD GitOps, Forgejo Actions CI/CD, Keycloak (OIDC), and secrets handling. |
Featured projects
FLAGSHIP · SEMANTIC CODE SEARCH · .NET 10 · ANGULAR 22 · POSTGRES + PGVECTOR · KEYCLOAK
code-brain
Ask a question about a codebase in natural language and get the relevant code back, together with the call and dependency relationships around each result. It is a system of six repositories that I designed and built end to end:
- Analyzers for C#, Java, and TypeScript/Angular read source code statically and emit one shared, schema-validated representation (CIIR).
- Indexer generates embeddings and stores documents and relations in PostgreSQL with pgvector, fed through object-storage uploads.
- API runs semantic search with reranking, expands each hit through a two-level relationship graph, and exposes MCP tools so AI assistants can query the same index.
- Web app (Angular, signals, Keycloak sign-in) lets people ask questions, rate the answers, and review feedback reports.
What it demonstrates: system design across languages with a stable, versioned contract between components; specs-first development; and a feedback loop built in to measure answer quality.
OPEN SOURCE · 14 NUGET PACKAGES · .NET 10 · ROSLYN SOURCE GENERATORS · OPENTELEMETRY
BlogDoFT.Libs
A suite of 14 reusable packages for .NET services, published on NuGet (30,000+ downloads in total), covered by 132 automated tests, and versioned in step with the .NET runtime (10.x). I use them in my own projects, such as code-brain and the Doc RAG ingestion API. Highlights:
- Roslyn source generator for EF Core filters. Annotate a filter DTO with
[GeneratePredicate<TEntity>]and get a strongly typedExpression<Func<TEntity, bool>>at compile time, with provider-aware text matching (ILIKEon PostgreSQL,EF.Functions.Likeelsewhere) and no reflection. - Result pattern and domain notifications to model failures without exceptions and map them to HTTP responses.
- Keycloak client-credentials token provider with caching, plus a
DelegatingHandlerthat authenticates outgoingHttpClientcalls. - OpenTelemetry tracing, metrics, and logs wired in a single
AddOtelcall, with Console, Zipkin, OTLP, or Prometheus exporters chosen by configuration. - Feature flags through a typed Flagr client, Dapper helpers for PostgreSQL (pagination, filtering, ordering), and warm-up health checks for readiness probes.
What it demonstrates: API design for reuse, compile-time code generation, packaging and release automation, and applying the same conventions across many services.
FULL-STACK PRODUCT · .NET 9 · ANGULAR 19 · POSTGRES
Developer Toolbox
A collection of tools for a developer's everyday work, including support for the Azure Service Bus Emulator. It turns a tangible engineering pain point into a documented local experience that is easy to start.
What it demonstrates: the ability to design an end-to-end solution: backend, frontend, database, messaging, configuration, and local execution.
PLATFORM · KUBERNETES · ARGO CD · GITOPS · CI/CD
k3s-apps
Declaratively managed manifests and applications. Infrastructure is treated as code: changes are reviewable, traceable, and reproducible instead of depending on manual configuration. This portfolio is delivered the same way: a push to main runs the tests, derives the next version from Conventional Commits, publishes a tagged release with generated notes, builds the image, and updates the GitOps repository that Argo CD reconciles.
What it demonstrates: an architectural view beyond the application: delivery lifecycle, environment standardization, and operational accountability.
CODE QUALITY · C#
CodeReviewAnalyzer
A C# project focused on analyzing code reviews. It reflects a concern shared by mature teams: making quality and continuous learning part of the development workflow.
What it demonstrates: interest in sustainable engineering, automated feedback, and improving team practices, not only delivering features.
DEVELOPER UTILITY · C# · REDIS
RedisToggler
A tool aimed at a recurring infrastructure task. Its intentionally small scope demonstrates attention to ergonomics, automation, and reducing repetitive work.
What it demonstrates: technical pragmatism: identifying a specific bottleneck and solving it with a focused tool.
Where to start
If you have two minutes
Read the code-brain card: the screenshot shows the result, and the list under it shows the scope, from static analysis to the search UI. Then skim k3s-apps to see how what I build gets delivered and operated.
If you are evaluating technically
Open the roadmap in the .specs/ folder of code-ciir-api to see decisions recorded phase by phase. Then read the CIIR JSON Schema shared by the three analyzers, and the .forgejo/workflows of any repository for the CI/CD pipeline.
Trade-offs I can walk you through
- Why one intermediate representation (CIIR) for every language instead of one analyzer per language, and what it costs.
- How reranking and a relationship graph change the quality of answers about code.
- Where authentication belongs in a chain of services, and how to keep it optional for local development.
- How to make every merge releasable: Conventional Commits, automatic versioning, and GitOps.
- How to choose boundaries between a frontend, an API, a database, and messaging services.
- When an internal tool deserves to become a product, and how to measure its value.
Let’s talk
VERSÃO EM PORTUGUÊS
Francisco Thiago
Arquiteto de software e engenheiro sênior de sistemas orientados a eventos e de alta disponibilidade: do código C# ao cluster Kubernetes em que ele roda.
Liderei o desenho da plataforma global de MES da maior empresa de cerveja e logística do planeta, implantada em mais de 300 cervejarias e usada por mais de 10.000 pessoas, e sou especialista em event sourcing, DDD, Kafka e na modernização de integrações com ERPs legados. No meu tempo livre construo ferramentas para desenvolvedores e mantenho um cluster Kubernetes em casa. Esses projetos são públicos e verificáveis, e esta página é servida por esse cluster, publicada por um pipeline que eu escrevi.
Histórico profissional
300+cervejarias rodando a plataforma global de MES que liderei, com mais de 10.000 usuários
900.000+requisições diárias atendidas por um sistema de autorização de movimentações financeiras que projetei e escalei
Dias → mslatência de notificação ao cliente após reestruturar o motor em uma consultoria do interior paranaense
200+aplicações brasileiras viabilizadas pelos padrões de arquitetura que defini
- Plataforma global de MES. Na maior empresa de cerveja e logística do planeta, liderei o desenho e a entrega da plataforma implantada em mais de 300 cervejarias no mundo, com mais de 10.000 usuários e economia operacional anual significativa.
- Padrões de arquitetura e Hub de Tecnologia. Defini os padrões que viabilizaram a criação e a internacionalização de mais de 200 aplicações construídas no Brasil e a consolidação de um Hub de Tecnologia brasileiro.
- Modernização fiscal e legal. Modernizei a pilha de software da maior unidade de negócio dessa empresa para as normas técnicas brasileiras e a Reforma Tributária, integrando com ERPs legados, incluindo COBOL e SAP.
- Autorização de movimentações financeiras em escala. Projetei e escalei um sistema que autoriza movimentações financeiras (saques e créditos) para mais de 900.000 requisições diárias, com picos, mantendo alta disponibilidade e baixa latência, e migrei seu motor crítico de Go para C# preservando estabilidade e desempenho sob carga.
- Motor de notificações. Em uma consultoria do interior paranaense, a que mais cresceu no país nos últimos anos, reestruturei um motor de notificação de clientes, reduzindo o tempo de resposta de dias para milissegundos.
- Liderança e ensino. Presidente do Comitê Técnico, conduzindo programas de certificação técnica, treinamentos internos e padrões de engenharia. Professor convidado na Unicesumar, em Engenharia de Software na graduação. Pós-graduação em Arquitetura de Soluções .NET, Uniciv (2018).
O que entrego
| Para o negócio | Para o time técnico |
|---|---|
| Sistemas que se mantêm disponíveis sob carga e transformam esperas de dias em milissegundos, com economia operacional mensurável. | Aplicações C# e Angular, APIs REST, mensageria com Kafka e PostgreSQL (incluindo pgvector). |
| Decisões registradas em specs e padrões, para que o próximo time entenda por que o sistema é como é, e não só o que ele faz. | Event sourcing, DDD e arquitetura hexagonal; análise estática (Roslyn, TypeScript Compiler API); contratos garantidos por JSON Schema. |
Entrega tratada como parte do produto: todo merge na main é testado, versionado, publicado e implantado automaticamente. |
Kubernetes (k3s), GitOps com Argo CD, CI/CD com Forgejo Actions, Keycloak (OIDC) e gestão de segredos. |
Projetos em destaque
code-brain — Faça uma pergunta sobre uma base de código em linguagem natural e receba o código relevante, junto com as relações de chamada e dependência ao redor de cada resultado. É um sistema de seis repositórios que projetei e construí de ponta a ponta:
- Analisadores para C#, Java e TypeScript/Angular leem o código estaticamente e geram uma única representação compartilhada, validada por schema (CIIR).
- Indexador gera embeddings e grava documentos e relações no PostgreSQL com pgvector, recebendo os arquivos por upload em armazenamento de objetos.
- API faz busca semântica com reranking, expande cada resultado por um grafo de relações de dois níveis e expõe ferramentas MCP para que assistentes de IA consultem o mesmo índice.
- Aplicação web (Angular, signals, login com Keycloak) permite fazer perguntas, avaliar as respostas e consultar relatórios de feedback.
Demonstra: desenho de sistemas entre linguagens com um contrato estável e versionado entre os componentes; desenvolvimento orientado a specs; e um ciclo de feedback embutido para medir a qualidade das respostas. Aplicação web → · API → · Indexador → · C# · Java · TypeScript
BlogDoFT.Libs — Conjunto de 14 pacotes reutilizáveis para serviços .NET, publicados no NuGet (mais de 30.000 downloads somados), cobertos por 132 testes automatizados e versionados junto com o runtime do .NET (10.x). Uso-os nos meus próprios projetos, como o code-brain e a API de ingestão do Doc RAG. Destaques:
- Source generator Roslyn para filtros do EF Core. Anote um DTO de filtro com
[GeneratePredicate<TEntity>]e receba, em tempo de compilação, umExpression<Func<TEntity, bool>>fortemente tipado, com busca de texto adaptada ao provedor (ILIKEno PostgreSQL,EF.Functions.Likenos demais) e sem reflexão. - Result pattern e notificações de domínio para modelar falhas sem exceções e mapeá-las para respostas HTTP.
- Provedor de tokens Keycloak (client credentials) com cache, mais um
DelegatingHandlerque autentica as chamadas de saída doHttpClient. - OpenTelemetry com traces, métricas e logs configurados em uma única chamada
AddOtel, com exporters Console, Zipkin, OTLP ou Prometheus escolhidos por configuração. - Feature flags por meio de um cliente tipado do Flagr, utilitários Dapper para PostgreSQL (paginação, filtros e ordenação) e health checks de warm-up para probes de prontidão.
Demonstra: desenho de APIs para reuso, geração de código em tempo de compilação, empacotamento com automação de release e aplicação das mesmas convenções em vários serviços. Explorar o código → · Pacotes no NuGet →
Developer Toolbox — Ferramentas para o cotidiano de desenvolvimento, incluindo apoio ao Azure Service Bus Emulator. Demonstra uma solução ponta a ponta: backend, frontend, banco, mensageria, configuração e execução local. Explorar o código →
k3s-apps — Manifestos e aplicações gerenciados declarativamente. Esta página é entregue da mesma forma: um push na main roda os testes, calcula a próxima versão pelos Conventional Commits, publica um release com tag e notas geradas, constrói a imagem e atualiza o repositório que o Argo CD reconcilia. Demonstra ciclo de entrega, padronização de ambientes e responsabilidade operacional. Explorar o código →
CodeReviewAnalyzer — Projeto em C# para análise de revisões de código. Demonstra interesse por engenharia sustentável, automação de feedback e melhoria das práticas de equipe. Explorar o código →
RedisToggler — Ferramenta para uma tarefa frequente de infraestrutura. Demonstra pragmatismo técnico: identificar um gargalo e resolvê-lo com uma ferramenta focada. Explorar o código →
Por onde começar
Se você tem dois minutos, leia o code-brain: a imagem mostra o resultado e a lista logo abaixo mostra o escopo, da análise estática à interface de busca. Para avaliação técnica, abra o roadmap na pasta .specs/ do code-ciir-api, onde as decisões estão registradas fase a fase, depois o JSON Schema do CIIR compartilhado pelos três analisadores e o .forgejo/workflows de qualquer repositório para ver o pipeline de CI/CD.