<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Bossle</title>
    <description>The latest articles on DEV Community by Bossle (@fullstack_fullstack_06068).</description>
    <link>https://dev.to/fullstack_fullstack_06068</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4135792%2F5a32d09f-762d-475c-a986-5ffba5bc5593.jpeg</url>
      <title>DEV Community: Bossle</title>
      <link>https://dev.to/fullstack_fullstack_06068</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fullstack_fullstack_06068"/>
    <language>en</language>
    <item>
      <title>Do Rugby 2023 ao Rugby 2026: evolução da arquitetura Front-End com a CAFFE</title>
      <dc:creator>Bossle</dc:creator>
      <pubDate>Tue, 22 Sep 2026 11:58:32 +0000</pubDate>
      <link>https://dev.to/fullstack_fullstack_06068/do-rugby-2023-ao-rugby-2026-evolucao-da-arquitetura-front-end-com-a-caffe-2b7m</link>
      <guid>https://dev.to/fullstack_fullstack_06068/do-rugby-2023-ao-rugby-2026-evolucao-da-arquitetura-front-end-com-a-caffe-2b7m</guid>
      <description>&lt;p&gt;Um projeto Front End pode parecer resolvido quando a interface funciona, responde bem e entrega o resultado esperado.&lt;/p&gt;

&lt;p&gt;Mas existe outra pergunta que só aparece com o tempo.&lt;/p&gt;

&lt;p&gt;Como esse código será compreendido e modificado daqui a dois ou três anos?&lt;/p&gt;

&lt;p&gt;Esta é a questão central por trás da evolução do projeto Rugby entre 2023 e 2026.&lt;/p&gt;

&lt;p&gt;O Rugby começou como um projeto Front End convencional. Com o passar do tempo, a necessidade de revisitar seu código revelou problemas e oportunidades que não eram tão evidentes durante sua construção.&lt;/p&gt;

&lt;p&gt;Essa experiência contribuiu para uma mudança de perspectiva sobre arquitetura CSS e, posteriormente, para o desenvolvimento da CAFFE, CSS Automation For Front End.&lt;/p&gt;

&lt;p&gt;Este artigo apresenta essa trajetória.&lt;/p&gt;

&lt;p&gt;Rugby 2023: quando organizar significava separar&lt;/p&gt;

&lt;p&gt;Na versão de 2023, a organização do CSS seguia principalmente a estrutura visual da interface.&lt;/p&gt;

&lt;p&gt;De maneira simplificada, existiam arquivos específicos para o header, hero, banner, cards, footer e outros componentes.&lt;/p&gt;

&lt;p&gt;Naquele momento, essa abordagem fazia sentido.&lt;/p&gt;

&lt;p&gt;Se o problema estivesse no header, o arquivo relacionado ao header era o primeiro lugar a procurar.&lt;/p&gt;

&lt;p&gt;Se fosse necessário alterar o hero, procurava se o arquivo correspondente ao hero.&lt;/p&gt;

&lt;p&gt;Era uma relação simples de entender.&lt;/p&gt;

&lt;p&gt;Essa forma de organização também ajudava durante o desenvolvimento inicial, porque o código acompanhava a própria composição visual da página.&lt;/p&gt;

&lt;p&gt;Não considero essa decisão um erro.&lt;/p&gt;

&lt;p&gt;Ela representava uma solução adequada para aquele momento do projeto.&lt;/p&gt;

&lt;p&gt;O problema apareceu posteriormente.&lt;/p&gt;

&lt;p&gt;O que muda quando revisitamos o projeto anos depois?&lt;/p&gt;

&lt;p&gt;Em 2026, ao retornar ao projeto, a perspectiva já era diferente.&lt;/p&gt;

&lt;p&gt;O problema não era simplesmente descobrir onde estava o CSS de determinado componente.&lt;/p&gt;

&lt;p&gt;Era compreender por que determinada regra estava naquele arquivo e quais outras regras dependiam dela.&lt;/p&gt;

&lt;p&gt;Uma alteração aparentemente simples poderia envolver especificidade, ordem de carregamento, estilos globais, containers, tipografia, responsividade, variáveis, componentes e media queries.&lt;/p&gt;

&lt;p&gt;A quantidade de arquivos não era necessariamente o problema.&lt;/p&gt;

&lt;p&gt;O problema era a relação entre eles.&lt;/p&gt;

&lt;p&gt;Isso levou a uma constatação importante.&lt;/p&gt;

&lt;p&gt;Um código pode ser organizado para facilitar sua construção e, ainda assim, não estar organizado da melhor maneira para sua manutenção ao longo do tempo.&lt;/p&gt;

&lt;p&gt;Fragmentação não é necessariamente um problema&lt;/p&gt;

&lt;p&gt;É importante fazer uma distinção.&lt;/p&gt;

&lt;p&gt;Separar CSS em arquivos menores continua sendo uma estratégia válida.&lt;/p&gt;

&lt;p&gt;O problema aparece quando a fragmentação passa a seguir exclusivamente a estrutura visual da página.&lt;/p&gt;

&lt;p&gt;Existe uma diferença entre dizer que determinado arquivo estiliza o hero e dizer que determinado arquivo pertence à camada responsável pelos componentes.&lt;/p&gt;

&lt;p&gt;No primeiro caso, a organização acompanha a interface.&lt;/p&gt;

&lt;p&gt;No segundo, acompanha uma responsabilidade arquitetural.&lt;/p&gt;

&lt;p&gt;Essa diferença se torna mais importante à medida que o projeto cresce.&lt;/p&gt;

&lt;p&gt;Rugby 2026: uma nova perspectiva&lt;/p&gt;

&lt;p&gt;A nova versão do Rugby não parte simplesmente da ideia de reorganizar arquivos.&lt;/p&gt;

&lt;p&gt;A preocupação passa a ser como estruturar o CSS para que suas responsabilidades sejam compreensíveis e previsíveis.&lt;/p&gt;

&lt;p&gt;Uma organização conceitual passa a considerar base, layout, componentes e utilitários.&lt;/p&gt;

&lt;p&gt;A base concentra reset, elementos e tipografia.&lt;/p&gt;

&lt;p&gt;O layout concentra container, grid e seções.&lt;/p&gt;

&lt;p&gt;Os componentes concentram header, hero, cards, banner e footer.&lt;/p&gt;

&lt;p&gt;Os utilitários concentram espaçamentos, visibilidade e ajustes específicos.&lt;/p&gt;

&lt;p&gt;O objetivo não é simplesmente criar mais pastas.&lt;/p&gt;

&lt;p&gt;É estabelecer uma relação mais clara entre regra, responsabilidade, camada e componente.&lt;/p&gt;

&lt;p&gt;Isso muda a maneira de diagnosticar problemas.&lt;/p&gt;

&lt;p&gt;Em vez de procurar apenas pelo nome visual do elemento, passamos a procurar pela responsabilidade arquitetural da regra.&lt;/p&gt;

&lt;p&gt;CSS Cascade Layers&lt;/p&gt;

&lt;p&gt;Uma das tecnologias que ganhou importância nessa nova perspectiva foi o CSS Cascade Layers.&lt;/p&gt;

&lt;p&gt;Através de at layer, podemos declarar explicitamente a organização da cascata.&lt;/p&gt;

&lt;p&gt;Por exemplo.&lt;/p&gt;

&lt;p&gt;at layer base, layout, components, utilities.&lt;/p&gt;

&lt;p&gt;A ideia é estabelecer uma ordem arquitetural entre grupos de regras.&lt;/p&gt;

&lt;p&gt;Isso reduz a dependência da ordem física dos arquivos e ajuda a controlar conflitos entre estilos.&lt;/p&gt;

&lt;p&gt;A arquitetura passa a participar diretamente da cascata.&lt;/p&gt;

&lt;p&gt;Esse é um ponto importante porque muitos problemas de manutenção CSS surgem quando a relação entre regras depende excessivamente de especificidade, ordem de importação, seletores excessivamente complexos e important.&lt;/p&gt;

&lt;p&gt;O objetivo não é eliminar a especificidade.&lt;/p&gt;

&lt;p&gt;É reduzir a necessidade de utilizá la como mecanismo de arquitetura.&lt;/p&gt;

&lt;p&gt;Design Tokens&lt;/p&gt;

&lt;p&gt;Outro aspecto importante da evolução foi perceber que determinadas decisões não pertencem aos componentes.&lt;/p&gt;

&lt;p&gt;Cores, espaçamentos, tipografia, níveis de z index e estados semânticos representam decisões do sistema visual.&lt;/p&gt;

&lt;p&gt;Em vez de espalhar esses valores pelo projeto, podemos centralizá los utilizando propriedades personalizadas do CSS.&lt;/p&gt;

&lt;p&gt;Por exemplo, uma variável pode representar a cor principal do projeto e outra pode representar um espaçamento padrão.&lt;/p&gt;

&lt;p&gt;Os componentes passam então a consumir essas decisões.&lt;/p&gt;

&lt;p&gt;A diferença parece pequena, mas representa uma mudança arquitetural.&lt;/p&gt;

&lt;p&gt;Antes, o componente definia o valor.&lt;/p&gt;

&lt;p&gt;Depois, o sistema define o token e o componente utiliza o token.&lt;/p&gt;

&lt;p&gt;Isso cria uma separação entre a implementação do componente e as decisões globais de design.&lt;/p&gt;

&lt;p&gt;A experiência levou à criação da CAFFE&lt;/p&gt;

&lt;p&gt;Foi nesse contexto que surgiu a CAFFE, CSS Automation For Front End.&lt;/p&gt;

&lt;p&gt;A CAFFE começou como uma tentativa de organizar recursos reutilizáveis para projetos Front End.&lt;/p&gt;

&lt;p&gt;Mas a proposta evoluiu.&lt;/p&gt;

&lt;p&gt;Hoje, a ideia é trabalhar com quatro elementos principais.&lt;/p&gt;

&lt;p&gt;HTML semântico.&lt;/p&gt;

&lt;p&gt;CSS arquitetural.&lt;/p&gt;

&lt;p&gt;JavaScript comportamental.&lt;/p&gt;

&lt;p&gt;Acessibilidade.&lt;/p&gt;

&lt;p&gt;A biblioteca utiliza tecnologias nativas da Web e procura evitar dependências externas desnecessárias.&lt;/p&gt;

&lt;p&gt;A intenção não é competir diretamente com frameworks como Bootstrap ou Tailwind.&lt;/p&gt;

&lt;p&gt;A proposta é oferecer uma base arquitetural pequena, explícita e auditável para projetos que trabalham diretamente com HTML, CSS e JavaScript.&lt;/p&gt;

&lt;p&gt;JavaScript e Event Delegation&lt;/p&gt;

&lt;p&gt;A mesma preocupação arquitetural aparece no JavaScript.&lt;/p&gt;

&lt;p&gt;Uma abordagem tradicional poderia registrar eventos individualmente em cada botão ou componente.&lt;/p&gt;

&lt;p&gt;Isso funciona.&lt;/p&gt;

&lt;p&gt;Porém, em interfaces maiores, o número de bindings pode crescer consideravelmente.&lt;/p&gt;

&lt;p&gt;A CAFFE experimenta uma abordagem baseada em event delegation.&lt;/p&gt;

&lt;p&gt;Os elementos declaram seus comportamentos através de atributos data.&lt;/p&gt;

&lt;p&gt;O mecanismo central identifica esses atributos e executa o comportamento correspondente.&lt;/p&gt;

&lt;p&gt;O fluxo conceitual consiste em um evento no DOM, identificação do comportamento e execução pelo mecanismo da interface.&lt;/p&gt;

&lt;p&gt;Isso permite trabalhar com elementos dinâmicos sem precisar registrar manualmente um novo listener para cada elemento criado.&lt;/p&gt;

&lt;p&gt;O JavaScript passa a funcionar mais como uma camada de comportamento do sistema.&lt;/p&gt;

&lt;p&gt;Acessibilidade como parte da arquitetura&lt;/p&gt;

&lt;p&gt;Outra mudança importante está na forma de tratar acessibilidade.&lt;/p&gt;

&lt;p&gt;Acessibilidade não deveria ser uma etapa adicionada depois que o componente visual está pronto.&lt;/p&gt;

&lt;p&gt;Ela deve participar da arquitetura desde o início.&lt;/p&gt;

&lt;p&gt;No desenvolvimento da CAFFE, isso envolve aspectos como navegação por teclado, focus visible, gerenciamento de foco, restauração do foco, Escape para fechamento de elementos sobrepostos, atributos ARIA, tabs semânticas, aria selected, aria current e prefers reduced motion.&lt;/p&gt;

&lt;p&gt;Por exemplo, um modal não é apenas uma estrutura que abre e fecha.&lt;/p&gt;

&lt;p&gt;Ele também precisa considerar o movimento do foco, a restrição da navegação ao contexto do modal, o fechamento pelo teclado e a restauração do foco após o fechamento.&lt;/p&gt;

&lt;p&gt;Esse comportamento faz parte do componente.&lt;/p&gt;

&lt;p&gt;Não é apenas um detalhe visual.&lt;/p&gt;

&lt;p&gt;O Rugby como laboratório&lt;/p&gt;

&lt;p&gt;Nesse processo, o Rugby passou a ter um papel diferente.&lt;/p&gt;

&lt;p&gt;Ele não é apenas um site.&lt;/p&gt;

&lt;p&gt;Ele funciona como um laboratório de evolução arquitetural.&lt;/p&gt;

&lt;p&gt;A relação pode ser compreendida da seguinte maneira.&lt;/p&gt;

&lt;p&gt;O Rugby de 2023 proporcionou experiência prática.&lt;/p&gt;

&lt;p&gt;A revisão do Rugby em 2026 revelou problemas e oportunidades.&lt;/p&gt;

&lt;p&gt;Essas observações contribuíram para a definição de princípios arquiteturais.&lt;/p&gt;

&lt;p&gt;Esses princípios foram utilizados no desenvolvimento da CAFFE.&lt;/p&gt;

&lt;p&gt;A CAFFE passou então a representar uma estrutura que pode ser reutilizada em novos projetos.&lt;/p&gt;

&lt;p&gt;Essa relação é importante.&lt;/p&gt;

&lt;p&gt;A CAFFE não surgiu simplesmente porque era necessário criar mais uma biblioteca.&lt;/p&gt;

&lt;p&gt;Ela surgiu da tentativa de transformar experiências práticas de desenvolvimento em princípios que pudessem ser reutilizados.&lt;/p&gt;

&lt;p&gt;Construir é diferente de manter&lt;/p&gt;

&lt;p&gt;Talvez esse seja o principal aprendizado proporcionado pelo projeto.&lt;/p&gt;

&lt;p&gt;Quando um sistema está sendo desenvolvido, existe uma grande quantidade de conhecimento na memória do desenvolvedor.&lt;/p&gt;

&lt;p&gt;Ele sabe por que determinado arquivo existe, por que determinada regra foi criada, qual componente depende de outra regra, qual solução foi escolhida e qual problema estava sendo resolvido.&lt;/p&gt;

&lt;p&gt;Depois de alguns anos, parte desse conhecimento desaparece.&lt;/p&gt;

&lt;p&gt;O código permanece.&lt;/p&gt;

&lt;p&gt;Por isso, arquitetura também é uma forma de documentação.&lt;/p&gt;

&lt;p&gt;Um bom sistema não deveria depender exclusivamente da memória de quem o criou.&lt;/p&gt;

&lt;p&gt;Ele precisa comunicar sua própria estrutura.&lt;/p&gt;

&lt;p&gt;2023, 2026 e CAFFE&lt;/p&gt;

&lt;p&gt;A evolução pode ser resumida em três momentos.&lt;/p&gt;

&lt;p&gt;Em 2023, a principal preocupação era construir a interface. A organização acompanhava principalmente os elementos visuais.&lt;/p&gt;

&lt;p&gt;Em 2026, a pergunta passou a ser como manter e evoluir a interface. A arquitetura começou a considerar responsabilidades, cascata, tokens, componentes, manutenção, acessibilidade e comportamento.&lt;/p&gt;

&lt;p&gt;Com a CAFFE, surgiu uma nova pergunta. Como transformar esse conhecimento em uma estrutura reutilizável?&lt;/p&gt;

&lt;p&gt;É nesse ponto que a experiência deixa de pertencer exclusivamente ao projeto Rugby.&lt;/p&gt;

&lt;p&gt;Ela passa a alimentar uma biblioteca.&lt;/p&gt;

&lt;p&gt;Uma microarquitetura Front End&lt;/p&gt;

&lt;p&gt;Por isso, atualmente vejo a CAFFE menos como uma simples biblioteca CSS e mais como uma microarquitetura Front End baseada em tecnologias nativas da Web.&lt;/p&gt;

&lt;p&gt;Sua proposta combina HTML semântico, CSS Cascade Layers, Design Tokens, JavaScript Event Delegation e acessibilidade.&lt;/p&gt;

&lt;p&gt;A intenção é manter o sistema pequeno o suficiente para ser compreendido e estruturado o suficiente para oferecer previsibilidade.&lt;/p&gt;

&lt;p&gt;Não se trata de esconder a Web atrás de uma grande abstração.&lt;/p&gt;

&lt;p&gt;Trata se de organizar melhor aquilo que a própria Web já oferece.&lt;/p&gt;

&lt;p&gt;O que mudou de verdade?&lt;/p&gt;

&lt;p&gt;A aparência da interface não é necessariamente a maior diferença entre Rugby 2023 e Rugby 2026.&lt;/p&gt;

&lt;p&gt;A principal mudança aconteceu na forma de pensar o código.&lt;/p&gt;

&lt;p&gt;Em 2023, a organização estava diretamente relacionada à interface e aos arquivos CSS responsáveis por cada parte dela.&lt;/p&gt;

&lt;p&gt;Em 2026, a organização passa a considerar arquitetura, responsabilidades, componentes e comportamentos.&lt;/p&gt;

&lt;p&gt;A CAFFE representa uma tentativa de transformar essa experiência em uma estrutura reutilizável.&lt;/p&gt;

&lt;p&gt;Conclusão&lt;/p&gt;

&lt;p&gt;Olhar para um projeto antigo não deveria significar simplesmente procurar erros.&lt;/p&gt;

&lt;p&gt;Projetos antigos também são registros de aprendizado.&lt;/p&gt;

&lt;p&gt;O Rugby de 2023 representa uma etapa importante da minha evolução como desenvolvedor Front End.&lt;/p&gt;

&lt;p&gt;A organização por componentes visuais fazia sentido naquele contexto e permitiu que o projeto fosse construído.&lt;/p&gt;

&lt;p&gt;Ao revisitar esse código em 2026, entretanto, surgiram novas perguntas.&lt;/p&gt;

&lt;p&gt;Como tornar a arquitetura mais previsível?&lt;/p&gt;

&lt;p&gt;Como controlar melhor a cascata?&lt;/p&gt;

&lt;p&gt;Como reduzir dependências entre estilos?&lt;/p&gt;

&lt;p&gt;Como centralizar decisões de design?&lt;/p&gt;

&lt;p&gt;Como organizar comportamentos JavaScript?&lt;/p&gt;

&lt;p&gt;Como tratar acessibilidade como parte do sistema?&lt;/p&gt;

&lt;p&gt;E, principalmente, como construir hoje um código que continue compreensível amanhã?&lt;/p&gt;

&lt;p&gt;Essas perguntas ajudaram a direcionar a evolução do Rugby 2026 e também contribuíram para o desenvolvimento da CAFFE.&lt;/p&gt;

&lt;p&gt;O Rugby 2023 ensinou sobre construção.&lt;/p&gt;

&lt;p&gt;O Rugby 2026 trouxe a perspectiva da manutenção.&lt;/p&gt;

&lt;p&gt;A CAFFE representa a tentativa de transformar esse aprendizado em arquitetura reutilizável.&lt;/p&gt;

&lt;p&gt;Talvez essa seja uma das principais características da engenharia de software.&lt;/p&gt;

&lt;p&gt;Um projeto não precisa ser perfeito quando nasce.&lt;/p&gt;

&lt;p&gt;Ele precisa ser capaz de ensinar o desenvolvedor a construir melhor o próximo.&lt;/p&gt;

&lt;p&gt;Projetos&lt;/p&gt;

&lt;p&gt;Rugby.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/JoseBossle/projeto_rugby" rel="noopener noreferrer"&gt;https://github.com/JoseBossle/projeto_rugby&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CAFFE, CSS Automation For Front End.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/JoseBossle/caffe" rel="noopener noreferrer"&gt;https://github.com/JoseBossle/caffe&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tags&lt;/p&gt;

&lt;p&gt;frontend, css, javascript, webdev, architecture&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>css</category>
      <category>frontend</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
