This is a submission for the GitHub Finish-Up-A-Thon Challenge
What I Built
O Code Property Graph é um sistema full-stack desenhado para mapear qualquer projeto de software em um modelo de grafo relacional. Ele permite que você visualize e navegue pela arquitetura do seu código — como camadas, projetos, namespaces e elementos (classes, interfaces, records) — de forma totalmente interativa.
A maior inovação do projeto é combinar o Paradigma Relacional (SQL Server + EF Core) com uma Visão de Grafo (Knowledge Graph). Não há necessidade de migrar para um banco de dados de grafos nativo; o backend modela nós e arestas usando tabelas e chaves estrangeiras clássicas, enquanto o frontend traduz tudo isso em um mapa mental em tempo real.
Além de documentar a arquitetura visualmente, ele possui uma engine de detecção de violações da Clean Architecture, alertando imediatamente caso uma regra de dependência seja quebrada (por exemplo, um elemento do Domain dependendo da Infrastructure). Tudo isso foi construído com as versões mais recentes do ecossistema: .NET 9.0 no backend (utilizando CQRS, MediatR e Rich Entities) e React 18 + TypeScript + React Flow no frontend.
Demo
O código-fonte completo está disponível no meu GitHub:
Repositório do Code Property Graph
Aqui está um vislumbre da interface mapeando as dependências de um sistema:
The Comeback Story
A ideia original do Code Property Graph nasceu de uma dor real que enfrentei ao longo de anos lidando com sistemas complexos. Projetar soluções utilizando Domain-Driven Design (DDD), padrões como CQRS e Clean Architecture exige disciplina rígida da equipe. Sempre senti falta de uma ferramenta visual e pragmática para validar essas dependências em tempo real, sem a burocracia de analisar centenas de arquivos .csproj.
O projeto estava "na gaveta" como uma prova de conceito conceitual. Para este Finish-Up-A-Thon, decidi finalmente tirar a poeira e finalizar a solução, elevando o nível técnico da stack. As principais mudanças para reviver e concluir o projeto incluíram:
Atualização do Backend: Refatorei o core para utilizar o .NET 9.0, garantindo que as entidades fossem extremamente ricas (Rich Entities sem Data Annotations) e implementando o Result Pattern para evitar exceções no controle de fluxo.
Adoção do React Flow: O frontend antigo não suportava bem a renderização de nós direcionais. Integrar o React Flow (@xyflow/react) com tipagem estrita em TypeScript mudou completamente a usabilidade, permitindo filtros em tempo real e destaque de dependências (IMPLEMENTS e DEPENDS_ON).
Engine de Violações: Concluí a feature mais importante: as queries SQL complexas via EF Core (AsSplitQuery) que detectam automaticamente componentes que furam o bloqueio da Clean Architecture.
My Experience with GitHub Copilot
O GitHub Copilot funcionou como um verdadeiro pair programmer sênior durante toda a jornada de finalização do projeto, acelerando o ciclo de desenvolvimento em frentes essenciais.
No backend (.NET), ele foi brilhante ao inferir a estrutura da minha Fluent API no Entity Framework Core. Quando eu precisava mapear as chaves compostas para as arestas (como ElementImplementation e ElementDependency), o Copilot autocompletava a configuração de relacionamentos e IEntityTypeConfiguration respeitando a regra de AsNoTracking que eu havia estabelecido. Ele também acelerou a criação dos Handlers do MediatR e as validações via FluentValidation.
No frontend, o maior desafio era o gerenciamento de estado e a renderização complexa de nós. O Copilot me poupou horas de documentação ajudando a tipar os nós customizados do React Flow e a escrever os seletores do Zustand para gerenciar as opções de filtros (camadas, diretórios e elementos selecionados). Ter essa IA do lado eliminou o trabalho repetitivo de boilerplate e me permitiu focar totalmente na arquitetura e na engenharia do modelo de dados.
Top comments (0)