Artigos sobre fullstack
26 artigos de Felipe Guedes sobre fullstack: System Design, arquitetura, engenharia full stack, auditoria e IA em produção.
- Desenhando um design system que sobrevive aos seus designersUm design system morre quando quem o fez vai embora. Os que vivem gravam decisões em tokens e restrições, não na memória.
- Por que continuo escolhendo Next.js para produtos que precisam durarNão é por ser popular. É porque um time consegue dominar o caminho inteiro da requisição sem inventar cola.
- A infraestrutura é sua, goste você disso ou nãoCada linha de código roda sobre decisões que você tomou ou aceitou por padrão. As duas são suas.
- O ORM está bem. Suas queries não.Todo banco lento que audito tem a mesma forma: um ORM culpado por queries que ninguém leu. Leia o SQL. Conserte o padrão.
- Estado do React que pertence ao servidorA maioria dos useState que audito guarda uma cópia do banco. Coloque esse estado onde ele mora e os bugs vão junto.
- Formulários são sistemas distribuídosUm formulário são duas máquinas, uma rede não confiável e um usuário que clica duas vezes. Desenhe como o sistema distribuído que ele é.
- Core Web Vitals são um problema de arquiteturaVocê não conserta LCP com plugin. As métricas estão medindo seu fluxo de dados, suas fronteiras e seu deploy.
- Generics em TypeScript que ajudam, e os que atrapalhamUm generic que relaciona entrada e saída é um presente. Um que aparece uma vez na assinatura é uma mentira que o compilador não pega.
- O engenheiro full-stack é um engenheiro de sistemasFull stack nunca foi saber duas linguagens. É assumir a falha onde quer que ela aconteça.
- Error boundaries de ponta a pontaError boundary não é um componente React. É uma decisão sobre onde a falha para, tomada em cada camada, do clique até o banco.
- Upload de arquivos, feito certo da primeira vezNunca deixe um arquivo passar pelo seu servidor. Assine, envie direto, verifique depois e trate todo nome de arquivo como hostil.
- UI com streaming e o que ela custa para o backendStreaming faz a página parecer rápida. Também mantém conexões abertas, multiplica queries e esconde caminhos lentos. Orce isso.
- O custo escondido de cada dependência que você adicionaA instalação é grátis. A árvore transitiva, o ritmo de upgrades, o peso no bundle e o risco de supply chain não são.
- Tipos nas bordas: valide uma vez, confie em todo lugarTipos do TypeScript somem em runtime. Coloque uma checagem real em cada borda e deixe o compilador levar a prova para dentro.
- TypeScript como ferramenta de design, não como linterSe seus tipos só pegam erro de digitação, você usa um décimo da ferramenta. Tipos são onde eu desenho o sistema primeiro.
- O edge runtime: quando ajuda e quando só move o problemaComputar perto do usuário só é rápido se o dado está perto da computação. Senão você adicionou uma viagem de ida e volta a cada query.
- A rota de API que virou um monólitoComeçou como um handler. Dois anos depois é um arquivo de 900 linhas que ninguém ousa tocar. Veja como evitar isso.
- WebSockets, SSE ou polling: uma tabela de decisãoTrês jeitos de levar dado ao vivo ao navegador. O certo depende de direção, escala e hospedagem, não do que soa moderno.
- A vantagem do generalistaAs falhas moram nas fronteiras entre camadas, e o generalista é quem consegue ver a costura.
- Server Components mudam onde fica a fronteiraA fronteira antiga era a API. A nova é uma diretiva no topo do arquivo. A maioria dos times ainda não percebeu.
- Por que ainda escrevo SQL à mãoO banco é o motor mais capaz da sua stack. Um query builder esconde essa capacidade. As queries que importam, eu mesmo escrevo.
- Auth não é uma decisão de bibliotecaEscolha a biblioteca por último. Antes, decida de quem é a identidade, onde a sessão vive e o que acontece quando ela é revogada.
- Feature flags como arquiteturaUma flag é um branch do seu sistema que vive em produção. Trate como tal, ou ela vira o bug que ninguém consegue reproduzir.
- Cache no Next.js sem surpresasQuatro camadas de cache, uma regra: nunca cacheie o que não consegue nomear, e nunca nomeie o que não consegue invalidar.
- Strict mode é o code review mais barato que você vai terUm revisor que lê cada linha, a cada tecla, nunca cansa e não tem ego. Custa uma linha no tsconfig.
- Um monorepo TypeScript que continua rápido depois do segundo anoMonorepos não ficam lentos por serem grandes. Ficam lentos porque ninguém desenhou o grafo de dependências de propósito.