Arquitetura Front-end
# ARCHICTURE
Arquitetura client-side escalável, distribuída em camadas, com o objetivo de promover uma arquitetura front-end que favoreça a reusabilidade de código, coesão, independência de tecnologia e testabilidade.
// Pensando na escalabilidade do projeto, sem trazer complicações
// e Over engineering, pensei em trazer um modelo de arquitetura para
// o frontend do boilerplate. Indo direto ao ponto, esse é o modelo:
app-ma
├── components # Componentes globais de uso geral do projeto.
├── layout # Wrappers padrões para componentes ou páginas.
├── hooks # Hooks globais de uso geral do projeto.
├── contexts # Contexts para gerenciamento de estado global do projeto.
├── modules # Módulos. Um para cada página, com a lógica de negócio.
│ └─ example-module
│ ├── index.js/ts # Ponto de partida desse módulo.
│ ├── hooks # Hooks globais de uso exclusivo desse módulo.
│ ├── components # Componentes de uso exclusivo desse módulo.
│ ├── service # Funções e lógicas de utilização geral e genérica
│ └── utils # Componentes de uso exclusivo desse módulo.
├── pages # Cada página associada com uma rota e um módulo.
├── services # Lógica de comunicação com o backend.
├── shared # Tudo que for compartilhável. Sendo configuração de temas, etc.
└── utils # Funções e lógicas de utilização geral e genérica.# PRESENTING ARCH
Obs: Essa estrutura interna aos Módulos é opcional e pode ser criada mediante necessidade, precisando inicialmente só do index.js/ts
# ARCH DEPEDENCY RULE
Modelo de regra de arquitetura limpa para o frontend que respeita a "depency rule", regra muito utilizada na maioria das arquiteturas existentes de software.
# MONOREPO
Uma proposta de solução em um monorepo que visa a coexistência do legado com o novo. Essa abordagem sugere a modularização do aplicativo e a evolução da base de código, sem a perda das páginas, componentes e funcionalidades já existentes.
Coexistência legado x novo
Compartilhamento dos comp. entre as apps
# TURBOREPO EXAMPLE
# MONOREPO
Uma proposta de solução multi-repo pensando somente em uma nova app e uma nova proposta de arquitetura. Essa abordagem sugere a modularização do aplicativo, escalabilidade, sem o aproveitamento do que já foi desenvolvido, porém com todos os benefícios da proposta anterior.
# FRAMEWORKS
Next.js é conhecido por sua renderização no lado do servidor (SSR) integrada e é uma escolha sólida para projetos que precisam de SSR de forma direta e eficiente.
Remix oferece suporte à renderização no servidor, semelhante às abordagens tradicionais, e enfatiza a flexibilidade e a personalização, sendo uma escolha para desenvolvedores que desejam maior controle sobre suas aplicações.