Arquitetura selecionada
Feature First
Cada feature concentra seus componentes, páginas, serviços, estado e modelos. A intenção é reduzir saltos entre pastas técnicas e deixar claro onde uma funcionalidade vive.
Estrutura de pastas
Navegue pelos arquivos para ver como a arquitetura aparece no código.
export const authRoutes = [
{
path: 'login',
loadComponent: () => import('./login.page')
.then((m) => m.LoginPage),
},
];Prós
- Boa navegação para times orientados a produto.
- Facilita remover, migrar ou refatorar uma feature inteira.
- Diminui acoplamento entre áreas da aplicação.
Contras
- Pode gerar duplicação se padrões compartilhados não forem bem definidos.
- Exige disciplina para não criar dependências cruzadas entre features.
Quando usar
- Aplicações com muitas jornadas independentes.
- Times que trabalham por squads ou domínios de produto.
- Projetos que precisam crescer sem virar uma grande pasta técnica.
Exemplo real
Um e-commerce com features como autenticação, catálogo, carrinho, checkout e pedidos.
Cenário prático
Ao criar a feature de pedidos, o time adiciona páginas, componentes, serviços e estado dentro de `features/orders`, deixando claro que tudo ali pertence à jornada de pedidos.
Como implementar
- Crie uma pasta por funcionalidade de negócio, como `auth`, `catalog`, `checkout` e `orders`.
- Mantenha dentro da feature seus componentes, páginas, rotas, serviços e modelos específicos.
- Use `shared` apenas para elementos realmente reutilizados por várias features e `core` para infraestrutura global.
Cuidado comum
Mover tudo para `shared` cedo demais recria acoplamento global e enfraquece o isolamento das features.