~/h0wzy/work/howzysolutions LEIAME.mdworkcvprivacy-policyen

howzysolutions

em construção produto próprio

2026-06-262026-08-20 · 12 commits

o_problema

Meu próprio portfólio. A primeira versão era uma experiência 3D dirigida por scroll que parecia pronta e não dizia nada: a engenharia funcionava, o conteúdo não existia. Oito projetos reais estavam de fora de um site cujo trabalho inteiro era mostrá-los.

o_que_faz

  • Um terminal interativo respondendo comandos reais sobre o autor e cada projeto, movido por um engine de comandos puro, sem import de framework.
  • O engine de comandos é agnóstico de renderer por construção: um segundo renderer (uma apresentação WebGL/imersiva opt-in) foi construído, funcionou exatamente como especificado, e depois foi removido sem tocar no engine. Isso é prova de que a separação se sustenta, não só uma alegação sobre ela.
  • Todo o conteúdo como registros tipados, então adicionar um projeto é edição só de dado e a lista, a página do projeto e o terminal não conseguem se contradizer.
  • Inglês e português brasileiro em paridade, onde tradução faltando é erro de compilação e não fallback em runtime.
  • Temas escuro e claro de um único conjunto de tokens, aplicados antes do primeiro paint, com contraste verificado por script em vez de afirmado.
  • Atividade de código medida em tempo de build a partir do WakaTime, cada número carregando seu próprio período.

stack

frontend

React 19 · TypeScript · Vite

infra

Cloudflare Workers

outros

GitHub Spec Kit · Vitest

medido

Bundle antes do rebranding
519.3 KBentry chunk gzipped, medido com npm run build
Budget
120 KBconstituição do projeto, budgets de performance
Requisitos funcionais
33specs/001-terminal-portfolio-rebrand/spec.md

como_foi_construido

O rebranding é spec-driven: uma constituição de projeto ratificada, uma spec com trinta e oito requisitos funcionais e quinze critérios de sucesso, um plano cujas decisões registram cada uma as alternativas rejeitadas, e uma lista de cento e seis tarefas ordenada por dependência.

A restrição organizadora foi medida, não presumida. O build anterior entregava 519,3 KB de JavaScript gzipped contra um budget de 120 KB, 4,3× acima. Cada grupo de dependência foi então empacotado isoladamente para achar onde estava o peso: React e react-dom em 58,7 KB, o grupo WebGL em 358,1 KB, e uma biblioteca de animação em 44,5 KB usada para três fades.

Toda decisão técnica decorre dessa medição. A biblioteca de animação saiu e foi substituída por CSS e um intersection observer. O grupo WebGL foi para trás de um import dinâmico opt-in. O roteamento foi resolvido prerenderizando um HTML por projeto, em vez de embarcar um router.

O trabalho 3D da primeira versão foi levado adiante uma vez, para um renderer imersivo opt-in, depois revisado ao lado do terminal DOM simples que ele envolvia, e cortado. As duas decisões ficam registradas com data, em vez de suavizadas numa narrativa de "sempre foi assim".

limitacoes_conhecidas

  • Em construção. Esta entrada descreve um rebranding em andamento, e é o projeto menos acabado deste site, que é exatamente por que ela diz isso em vez de esperar para ser descrita no passado.
  • Ainda não existem screenshots de nenhum projeto. Todo layout é construído para ler corretamente sem imagem, então podem ser adicionados depois sem mudança de layout, mas o site hoje não mostra telas.
  • Um renderer 3D/WebGL opt-in foi construído e depois removido após revisão. Este site não demonstra essa capacidade como código rodando no momento, só como este relato de construir e depois cortar.

tempo de código rastreado

17 hrs 17 mins Fonte: WakaTime · rastreado desde 2026-03-17 até agora

voltar para todos os trabalhos