No cenário atual do desenvolvimento de software, onde a inteligência artificial se tornou uma ferramenta indispensável, um projeto inusitado chama a atenção ao transformar uma dor universal dos programadores em uma experiência artística e interativa. Trata-se do Bug Obituary, um cemitério virtual tridimensional onde cada erro de código resolvido ganha um obituário dramático e uma lápide personalizada. O mais curioso é que seu criador, um técnico em Informática para Internet recém-formado, não escreveu uma única linha de código de forma manual, utilizando metodologias avançadas de instrução para IA como principal ferramenta de desenvolvimento.
Metodologia de desenvolvimento orientada por agentes de IA
A base do projeto reside em uma metodologia aprendida durante o ensino técnico, que coloca a inteligência artificial como parceira de implementação, mas mantém o desenvolvedor no comando absoluto das decisões de arquitetura e solução de problemas. A chave está na instrução precisa: em vez de comandos vagos, o criador fornecia exemplos do próprio código e descrições cirúrgicas dos problemas, incluindo a causa raiz e a solução esperada. Para organizar esse processo, foi criado um documento fundamental chamado AGENTS.md na raiz do projeto. Este arquivo serve como fonte única da verdade para qualquer agente de IA que trabalhe na codebase, descrevendo stack tecnológica, estrutura de pastas, convenções do App Router do Next.js, contrato da API, schema do Redis, regras de estilo e até proibições explícitas, como o uso de geometrias específicas em versões incompatíveis do Three.js.
Arquitetura técnica e escolhas de stack
A stack tecnológica foi selecionada com critérios específicos de performance, aprendizado e custo. O projeto utiliza Next.js 16 com App Router, adotando a regra de que tudo é Server Component por padrão, e a diretiva “use client” só é aplicada quando o componente necessita de hooks, eventos ou APIs do browser. Essa decisão elimina waterfalls de dados e estados de loading para o conteúdo inicial. Para a renderização 3D, a escolha recaiu sobre o Three.js puro, em vez de bibliotecas de abstração como o React Three Fiber. O objetivo era compreender profundamente o funcionamento da engine 3D, com toda a lógica de cena organizada em módulos TypeScript dedicados para cena, lápides, cemitério, atmosfera, iluminação e controles.
Persistência de dados com Redis em vez de PostgreSQL
Uma das decisões mais deliberadas do projeto foi a escolha do Redis, da Upstash, como banco de dados, em detrimento de um sistema relacional como o PostgreSQL. O raciocínio parte da simplicidade do modelo de dados: cada bug possui apenas um ID, nome, datas, stack e um obituário gerado. Não existem usuários, relações complexas ou necessidade de queries elaboradas com joins. A operação mais frequente é uma leitura simples de todos os bugs ordenados por data. O Redis resolve isso com eficiência O(1) através de um SET por bug e um índice ordenado. O free tier generoso do Upstash Redis, com acesso via HTTP REST, permite funcionamento em qualquer runtime, inclusive Edge, sem a complexidade de gerenciar pools de conexão, comum em ambientes serverless com PostgreSQL.
Geração de conteúdo com Groq e LLaMA 3.3
Para a criação dos obituários literários e irônicos de cada bug, a API do Groq foi selecionada priorizando velocidade e custo. A plataforma utiliza LPU (Language Processing Unit), hardware especializado que entrega tokens significativamente mais rápido que GPUs convencionais. O modelo llama-3.3-70b-versatile, disponível no free tier, gera respostas em um a dois segundos. Um aspecto crítico foi a instrução strict de JSON-only no system prompt, eliminando preâmbulos, markdown ou explicações não solicitadas. Qualquer desvio desse formato resulta em um erro 422 na API route, com parsing realizado através de um simples JSON.parse(raw) dentro de um bloco try/catch para tratamento robusto de falhas.
Desafios técnicos e soluções implementadas
Durante o desenvolvimento, vários problemas específicos surgiram e foram resolvidos através de prompts detalhados para a IA. Inicialmente, as lápides eram dispostas em uma grade linear, criando uma fileira horizontal pouco interessante visualmente. A solução foi implementar uma distribuição polar, onde as lápides se espalham em um arco de 126 graus ao redor do ponto focal da câmera, com profundidade variável. Bugs mais novos ficam mais próximos, enquanto os mais antigos recuam para a névoa, com posições estáveis garantidas por um gerador pseudo-aleatório baseado no ID de cada bug.
Problema da geometria da lápide e seleção de tipos
Dois outros obstáculos foram a orientação incorreta da meia-lua decorativa nas lápides e a repetição de um único tipo de lápide. A geometria CylinderGeometry com thetaLength = Math.PI criava um semicírculo, mas uma rotação mal configurada o deitava de lado. O ajuste correto dos eixos de rotação resolveu o alinhamento. Já a seleção do tipo de lápide, que inicialmente usava apenas o primeiro caractere hexadecimal do UUID, tendia a repetir o mesmo tipo devido à estrutura fixa dos primeiros bits dos UUIDs versão 4. A correção foi implementar um hash de Horner sobre a string inteira do ID, garantindo uma distribuição uniforme entre os três modelos disponíveis.
Estética visual inspirada em Tim Burton e interatividade
A atmosfera do cemitério virtual é diretamente inspirada no estilo visual do cineasta Tim Burton. O visual cel-shaded é alcançado através do uso exclusivo do MeshToonMaterial no Three.js, evitando materiais mais realistas como MeshStandardMaterial. A cena é composta por lápides com musgo, trincas, névoa exponencial, luz de lua fria e velas tremulantes, tudo construído com primitivos geométricos do Three.js, sem o uso de assets ou texturas externas. A interatividade é um ponto forte: um sistema de raycasting testa a cada frame a posição do mouse contra todos os objetos da cena. Ao detectar o hover sobre uma lápide, o sistema sobe na hierarquia do objeto para encontrar o bugId, acende um emissive em roxo frio na pedra e posiciona dinamicamente um card 2D com informações do bug, projetando coordenadas 3D para pixels CSS.
Impacto no aprendizado e portfólio profissional
Este projeto representa uma mudança de paradigma no que constitui um projeto de portfólio para desenvolvedores iniciantes. Em vez de criar mais uma lista de tarefas ou clone de e-commerce, o foco foi resolver uma dor real da comunidade de forma criativa, demonstrando domínio sobre arquitetura, tomada de decisão técnica e metodologias modernas de desenvolvimento assistido por IA. O código é completamente open source, servindo como um caso de estudo prático de como instruir modelos de linguagem de forma eficaz para gerar sistemas complexos e funcionais. A decisão de documentar tudo no AGENTS.md criou um padrão replicável para outros desenvolvedores que desejam adotar fluxos de trabalho similares, onde a IA atua como um executor de alto rendimento, mas a visão e o controle permanecem com o engenheiro.
O Bug Obituary está disponível publicamente, permitindo que qualquer desenvolvedor, independentemente de sua experiência, possa visitar o cemitério virtual, navegar entre as lápides e, finalmente, dar um descanso digno àquele bug que apareceu numa sexta-feira às 17h58, desapareceu misteriosamente e retornou semanas depois mais resistente. O projeto materializa a catarse de resolver um problema persistente, transformando a frustração em arte, e documenta um caminho viável para a construção de software complexo na era da inteligência artificial generativa, onde o valor do desenvolvedor migra da escrita manual de sintaxe para a clareza de pensamento, arquitetura e capacidade de instrução precisa.
